- ESPUI — Простой проект умного дома
- Оставьте комментарий:
- Навигация по сайту:
- Юный Технарь:
- Помощь проекту:
- Поиск
- Последние статьи
- Информер на матрице 8 на 32 из WS2812
- Бегущая строка на светодиодной матрице W…
- Мой канал на YouTube
- Подпишитесь!
- MQTT, умный дом, ESP-8266 и Plug&Play
- Мой умный дом на ESP8266, часть 3
- Прошивка ESP8266
- Настройка I2C
- Настройка связи с MQTT-брокером
- Настройка кнопки
- Датчик атмосферного давления BMP085
- Датчик влажности DHT11
- Проверка
- Ответы на вопросы
- Читают сейчас
- Редакторский дайджест
- Похожие публикации
- Мой умный дом на ESP8266, часть 2
- Знакомство с Node-RED и потоковое программирование в Yandex IoT Core
- Развертывание и настройка аутентификации node-red на docker-compose
- Вакансии
- Минуточку внимания
- Комментарии 19
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 из первой статьи (специально ходил посмотреть, что же вы понимаете под «умным домом»). «Надо побольше программировать, и чтобы обязательно конкретный язык, и конкретный протокол» — это как требования к типоразмеру транзисторов, цвету текстолита и возможности заливать свою прошивку в контроллеры всей моей домашней техники: возможно, важно, если изначальная цель — для души дни напролёт в этой технике ковыряться, но совершенно пофигу, если цель — пользоваться. Даже если иногда надо будет влезть внутрь и что-то исправить.