Espui простой проект умного дома

ESPUI — Простой проект умного дома

ESPUI — Простой проект умного дома.

Ссылки на используемые компоненты:

4-х канальный релейный модуль — http://ali.pub/1z8ol3

ESPUI — Простой проект умного дома

После компиляции вычеркнутые строки в скетче надо удалить

Оставьте комментарий:

Юный Технарь:

Помощь проекту:

Деньги можно перечислить на карту Сбербанка России:

4276 5400 2194 5088

Поиск

Последние статьи

Информер на матрице 8 на 32 из WS2812

Информер на матрице 8 на 32 из WS2812.

Бегущая строка на светодиодной матрице W…

Бегущая строка на светодиодной матрице WS2812.

Мой канал на YouTube

Подпишитесь!

2015, Arduinoprom.ru — блог Чилингаряна Грачика. Все авторские права на тексты принадлежат ему.

При размещении текстов и видеоматериалов на сторонних ресурсах активная гиперссылка ОБЯЗАТЕЛЬНА.

Все логотипы и товарные знаки, размещенные на сайте, принадлежат только их законным владельцам (правообладателям).

MQTT, умный дом, ESP-8266 и Plug&Play

Создание умного дома подразумевает массу разных датчиков, контролирующих обстановку в доме — датчики движения, освещения, температурные и прочие. Если «умный дом» небольшой, то все выглядит просто даже с самодельными системами на базе открытых решений (MQTT, OpenHAB и т.д.) — подключили датчик, прописали его в программе OpenHAB или HomeAssistant и начали работать. Но если датчиков много, то появляется много рутинной и неблагодарной работы по прописыванию каждого из них в системе управления.

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

Конкретно эта прошивка работает на модулях с ESP-8266 (в том числе и на Sonoff Basic Switch и Sonoff Touch Wallswitch) с P&P скриптами для OpenHAB и HomeAssistant, но сам способ выдачи plug&play информации можно использовать и в других проектах.

При подключении устройства к MQTT-брокеру создаются топики вида (в данном случае — для кнопки FLASH на ESP-8266 с серийным номером 0023CB541):

  • /myhome/PNP/ESPX-0023CB541/BUTTON/name — название/описание («FLASH button» — так будет оно отображаться в веб-интерфейсе)
  • /myhome/PNP/ESPX-0023CB541/BUTTON/type — тип переменной и направление потока данных для нее, «O:Switch» обозначает датчик, который выдает информацию, а, например, «I:Dimmer» — входящий канал диммера
  • /myhome/PNP/ESPX-0023CB541/BUTTON/groups — группы, в которых эта переменная будет фигурировать по умолчанию («Switches Builtin Buttons»)
  • /myhome/PNP/ESPX-0023CB541/BUTTON/min — минимальное значение (для числовых переменных, для кнопки оно будет пустым)
  • /myhome/PNP/ESPX-0023CB541/BUTTON/max — максимальное значение (аналогично)

Скрипт, запускающийся на сервере (по крону или вручную, после подключения устройства) — скачивает список топиков из /myhome/PNP, ищет отсутствующие в OpenHAB девайсы и создает для них конфигурационные файлы. Если файл конфигурации для такого устройства уже есть, то P&P-информация полностью игнорируется, но можно этот файл удалить, при необходимости заново создать файл для устройства с изменившимся набором датчиков.

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

Немного поподробнее расскажу про собственно прошивку для ESP-8266. Ее исходные коды (и скрипты поддержки для OpenHAB и HomeAssistant) можно найти на Github (конкретно скрипты поддержки лежат здесь).

Она работает на стандартных модулях ESP-8266 (а также на Sonoff Basic Switch и Sonoff Touch Wallswitch), поддерживает обновление прошивки на лету (ArduinoOTA), а также имеет простейший веб-сервер для первоначального конфигурирования параметров WiFi-сети и задания IP-адреса MQTT-брокера.

Структура прошивки модульная и можно довольно легко добавлять свои датчики/устройства. Текущий список включает в себя:

  • Инфракрасные датчики движения и радио-датчик движения Parallax X-band motion detector (до 3 штук на модуль)
  • Датчик температуры/влажности DHT22 или аналогичный
  • Мой 4-канальный диммер, управляемый по Modbus/RS-485
  • Сонары HC-SR04 и сонары MaxBotix с последовательным выводом
  • Реле на Sonoff Basic Switch и Sonoff Touch (последний можно переключить как в режим контроля реле по кнопке, так и только через OpenHAB/HomeAssistant)
  • Встроенные ADC, светодиод и кнопка Flash (для Sonoff Touch — это сенсорная кнопка)
  • Простой термостат с двумя реле для управления вентилятором (indoor unit) и компрессором (outdoor unit)

Следует заметить, что из-за нехватки пинов на ESP-8266 модули могут конфликтовать друг с другом (например, диммер с сонаром одновременно не получится подключить, если не перераспределить пины самостоятельно).

После выбора необходимых устройств в esp-sensors.h, компиляции и прошивки — модуль переключится в режим конфигурирования — поднимет свою WiFi-сеть с именем типа «espx-0023cb541», к которой нужно подключиться (можно любым смартфоном) с паролем из того же файла, затем зайти на 192.168.4.1 и задать логин и пароль сети, а также IP-адрес брокера. Эти параметры сохранятся во флеше, так что второй раз не понадобиться этого делать. При невозможности подключиться к заданной сети в течении одной минуты — оно снова переключится в режим конфигурирования на три минуты, а потом будет повторять этот цикл до успешного подключения.

Для тех кто соберется править эту прошивку, упомяну, что каждый модуль датчиков/устройств разбит на шесть функций:

Мой умный дом на ESP8266, часть 3

Прошивка ESP8266

Прошивать мы будем прошивкой ESP Easy. Эта прошивка простая. Там интуитивно понятно что и как настраивать. Сразу видно где прописать связь с MQTT-брокером. И видно где размещать подключаемые к микроконтроллеру устройства. В настройках устройств легко найти галочку для связи с MQTT-брокером посылать сигналы.

Как именно прошивать я рассказывать не буду. Этого материала полно в интернете. Тем более что разные модификации ESP8266 можно прошивать по-разному. Найдите гайд по прошивке именно вашего устройства и прошейте ESP Easy.

Релиз ESP Easy

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

После прошивки и настройки Wi-Fi на устройстве вы сможете заходить через браузер в интерфейс прошивки прямо набрав адрес устройства в браузере. Начнем с I2C.

Настройка I2C

Для начала настроим протокол I2C. По умолчанию для подключения устройств к контроллеру по этой шине используются пины 4 и 5. Нам же нужны другие пины. Заходим в раздел Hardware и меняем эти настройки:

Указание пинов для I2C-протокола

Настройка связи с MQTT-брокером

В разделе Controllers прошивки ESP Easy можно прописать связь микроконтроллера ESP8266 с тремя серверами. Мы пока добавим связь с одним сервером, а именно с нашим MQTT-брокером. По большому счету одного этого брокера достаточно практически для всех нужд умного дома.

Связь с MQTT-брокером

Выбираем протокол Home Assistent. Почему именно его? Об этом написано в статье Термометр на ESP8266 с прошивкой ESP Easy на сайте веб-сервиса WQTT.ru. А так протокол выбирается в соответствии с выбранным сервером.

Далее прописываем адрес и порт нашего брокера, логин и пароль доступа. И указываем такие флажки как Will Retain и Enabled. Флажок Will Retain позволит брокеру запоминать последние опубликованные сообщения и таким образом состояние вашего умного дома будет хранится именно на брокере.

Настройка важных флажков

Настройка кнопки

Переходим в раздел Devices прошивки ESP Easy. И размещаем информацию о кнопке:

Кнопка будет подключена к пину GPIO4

Состояние кнопки мы не будем использовать. Нам важен лишь факт ее нажатия. А вот включить или выключить лампу будем решать на основании ее текущего состояния, которое хранится в MQTT-брокере. Эта логика будет позже прописана в Node RED.

Датчик атмосферного давления BMP085

В том же разделе добавляем датчик давления:

Напомню, этот датчик связан с микроконтроллером по шине I2C, поэтому пины не нужно указывать. Они выше были указаны. В настройках мы укажем интервал отправки значений датчика 200 сек. И поставим галочку напротив Send to Controller, что заставит микроконтроллер отправлять значения датчиков на контроллер номер 1 (см. черный кружочек с числом).

Для значения Pressure добавим формулу пересчета из гигапаскалей в мм.рт.ст.

Датчик влажности DHT11

Датчик влажности будет размещен на пине GPIO14. Настройки для датчика тривиальные:

Настройки датчика влажности DHT11

Проверка

Итого страница Controllers должна выглядеть так:

Контроллеры

А страница Devices так:

В колонке Values будут видны считываемые показания датчиков.

Если все сделано правильно, то на сервере WQTT.ru мы увидим, что значения уже передаются:

В следующей статье настроим последний компонент Node RED.

Ответы на вопросы

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

Вижу метеостанцию на Node-Red. Умный дом не вижу…

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

Подскажите, а не рассматривали другие прошивки?

Рассматривал. Под требования не подходят. Я не отрицаю их использование, но они более сложные для понимания. ESP Easy в этом плане просто как пенек. Даже достаточно взглянуть на его веб-интерфейс и мне, далекому от МК-темы, сразу понятно что к чему и как настраивать.

датчики DHT11 просто отвратительны

Датчик DHT11 взят для примера. Тут главное что требования выполнены. А уж какие датчики подключать — дело вкуса.

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

В комментариях отписался человек, который посадил на свой роутер 11 контроллеров ESP. И все работает.

Ой, у вас баннер убежал!

Читают сейчас

Редакторский дайджест

Присылаем лучшие статьи раз в месяц

Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.

Похожие публикации

Мой умный дом на ESP8266, часть 2

Знакомство с Node-RED и потоковое программирование в Yandex IoT Core

Развертывание и настройка аутентификации node-red на docker-compose

Вакансии

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Минуточку внимания

Комментарии 19

11 контроллеров на ESP…
У людей бывает по 150+ устройств ZigBee.

А для чего вам 150 датчиков?

Это не у меня. И не «датчиков», а «устройств»: датчики, выключатели, исполнительные устройства… У людей есть большие сети «умного дома’.

Выключатель или два в каждую комнату + коридоры, туда же по датчику движения/присутствия, датчику открытия двери, датчик температуры/влажности, датчик газа/дыма. Датчики протечки, краны для перекрытия воды/газа, моторизованные шторы, ИК шлюзы, кнопки. Продолжать можно ещё долго.
У меня в двухкомнатной квартире 32 zigbee устройства и как бы есть куда расти

Если от стадии «у меня метеостанция на ардуине с mqtt и кнопкой» вы начнёте переходить к «я не хочу вообще ничего видеть и знать (пока не занимаюсь отладкой) о богатом внутреннем мире датчиков дома, но хочу чтобы оно само делало мне и (!) остальной моей семье удобно» — вы постепенно обнаружите, что:
1) esp — это только для очень кастомных устройств с очень кастомной логикой прямо на борту (и тогда там гораздо интереснее с ESPHome).
2) к 30-40 устройствам начинаются лаги (да-да, wifi), и включенная соседями фиговая микроволновка (или начало просмотра HD-видео на том же wifi-канале) вдруг задерживает автоматическое включение света в туалете на 5 секунд.
3) универсальные устройства (и температура, и движение, и освещённость, да ещё с кнопкой поверх) — совершенно бессмысленны. Температуру и влажность надо измерять там, где на них нет внияния местных факторов, датчик движения должен быть направлен туда куда надо (а не там, где удобно поставить кнопку) и т.д. Так что отдельных устройств надо ещё чуть больше.
4) чтобы делать удобно, порогом не должно быть «ой, надо ещё одну esp`шку паять и потом в веб-интерфейсе настраивать на ней всё… завтра сделаю», а надо чтобы когда пришла интересная идея — можно было просто взять с полки очередной готовый покупной датчик / кнопочку — и через 5 минут идея запущена в проверку жизнью.
5) во все места, где надо что-то поставить, провода с питанием для esp тянуть нереально.

6) 99.9% статей со словами «умный дом» — это про (на выбор): «я спаял датчик и сделал для него прошивку» / «я на стадии ремонта закатал в стены 10км проводов» / «я сделал бота, который может прислать мне температуру в каждой комнате» / — и прочих вещах, не имеющих к реальному удобству никакого отношения. Почему-то до статей о реальном удобстве у тех, кто начинал с вышеприведённых тем, обычно дело не доходит. (просто статистика личных наблюдений).

И где-то в этот момент вы с удивлением обнаружите, что устройств действительно уже под сотню, но это как-то уже не кажется много. Они просто естесвтенным образом, без всякой гонки за их количеством, заводятся сами по мере движения по пути «действительно удобно, а не типа-дом-будущего-из-фильмов».

И где-то тут же, перечитав написанное ранее, вы сами очень удивитесь требованиям 3, 4, 5, 6 из первой статьи (специально ходил посмотреть, что же вы понимаете под «умным домом»). «Надо побольше программировать, и чтобы обязательно конкретный язык, и конкретный протокол» — это как требования к типоразмеру транзисторов, цвету текстолита и возможности заливать свою прошивку в контроллеры всей моей домашней техники: возможно, важно, если изначальная цель — для души дни напролёт в этой технике ковыряться, но совершенно пофигу, если цель — пользоваться. Даже если иногда надо будет влезть внутрь и что-то исправить.

Читайте также:  Проект мансардного дома пенобетона
Оцените статью