Esp8266 умная розетка mqtt

Inreviews

Inreviews | Обзоры электроники и гаджетов

Простая умная розетка на ESP-01 своими руками

Рассмотрим процесс создания дешевой умной розетки на esp8266 с управлением по MQTT. За основу взять модуль ESP-01S (покупался на aliexpress) и модуль с двумя реле с опторазвязкой.

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

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

Подключаем все элементы устройства следующим образом (как показано на рисунке).

Управляющие входы блока реле нужно соединить между собой и подключить на вход GPIO0 контроллера ESP-01S. Также нужно подключить контакты VCC и GND. На клеммы реле нужно подключить вилку 220в. и контакты колодки (используем нормально открытые контакты).

За логику контроллера будет отвечать прошивка ESPEasy. Текущая стабильная версия R120. Как залить прошивку подробно описано тут.

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

Протокол, который будет использоваться для управления розеткой называется OpenHAB MQTT.
Указываем IP-адрес брокера, порт, пользователя и пароль, если требуется авторизация.

В нашем случае используется gpio0, поэтому на закладке Devices создаём новое устройство Switch input — Switch, даём имя socket1, ставим галку PullUP, назначаем gpio , Switch Button Type выбираем Push Button Active LOW, Value называем state.
Имя устройства и имя параметра (value) потребуется для работы скриптов.

Затем создаем прослушивание MQTT, что бы изменение в топике приводило к реакции на нужном входе контроллера.
На закладке «devices» создаём новое устройство Generic — MQTT Import, даём устройству имя, указываем топик/%sysname%/GPIO0, изменения в котором будут отслеживаться.

Далее нужно создать правило, которое определит реакцию на кнопку и публикацию в MQTT состояния gpio0.

on socket1#state do
if [socket1#state] = 0
gpio,0,1
Publish /%sysname%/GPIO0,1
else
gpio,0,0
Publish /%sysname%/GPIO0,0
endif
endon

on socket#GPIO0 do
if [sniff#GPIO0] = 1
gpio,0,1
if [sniff#GPIO0] = 0
gpio,0,0
endif
endon

Пояснения к скриптам: сначала проверяется состояние кнопки по имени socket1 и свойству state, когда кнопка нажата (активный НОЛЬ то есть LOW уровень) gpio0 выставляется в лог.1 и публикуется состояние в соответствующем топике, иначе gpio0 выставляется в лог.0 и так же публикуется состояние.
Во второй части скрипта прослушивается соответствующий топик, при публикации в нём 1 gpio0 выставляется в лог.1, при публикации 0 gpio0 выставляется в лог.0.

В итоге все работает как задумывалось при бюджете не более 300 рублей. Мощность подключаемых к розетке приборов не должна превышать 10А. Это обусловлено максимально допустимой мощностью реле.

Источник

Блог ID

Умный дом и самодельные устройства

MQTT (Message Queue Telemetry Transport) — протокол упрощённой передачи сообщений. Используется для обмена сообщения между устройствами по принципу издатель-подписчик.

Введение:

В этой статье будет рассмотрен протокол MQTT и его применение в системе домашней автоматизации на примере управления по MQTT беспроводной розеткой, собранной на базе микроконтроллера ESP8266 и твердотельного реле Omron, через сервер умного дома «MajorDoMo» (на линуксе). Затем в систему будет добавлен датчик температуры и влажности DHT22, с которого мы будем получать данные по MQTT и управлять другими устройствами (wi-fi розеткой) в зависимости от полученных показателей. В практической части будут использованы следующие электронные компоненты: микрокомпьютер Raspberry Pi 2 или 3, Wi-Fi модуль ESP-01, твердотельное реле Omron G3MB-202P, модуль датчика температуры и влажности DHT22, а так же миниатюрный источник питания на 3,3 вольта.

Немного теории:

Современный мир нельзя представить без электронных устройств, они проникают в нашу жизнь все глубже. Автоматизация перестала быть прерогативой лишь предприятий — все шире получает распространение концепция Интернета вещей (англ. Internet of Things, IoT), в соответствии с которой устройства взаимодействуют друг с другом для выполнения тех или иных задач домашней автоматизации. А так как принципы домашней автоматизации пришли из промышленности, то от туда же пришли и протоколы взаимодействия между устройствами и как раз одним из таких промышленных протоколов, который можно и нужно использовать в системах умного дома — является протокол MQTT. Впервые он появился в 1999 году, а спецификация MQTT 3.1.1 была стандартизирована консорциумом OASIS в 2014 году.

MQTT Это упрощенный сетевой протокол прикладного уровня, работающий поверх стека TCP/IP. Так же есть версия протокола MQTT-SN, предназначенная для работы со встраиваемыми беспроводными устройствами без поддержки TCP/IP (на базе Zigbee и т.п.). Основными преимуществами протокола являются:

  • нетребовательность к каналу связи, вплоть до работы в условиях регулярной потери связи
  • асинхронность работы
  • малые размеры сообщений
  • относительно высокая скорость работы
  • поддержка QoS

Данная статья не преследует цель дать подробное определение и описание принципов работы протокола. Поэтому сразу переходим к практике.

Практика:

Наиболее простой задачей в домашних условиях является управление освещением или какими-либо бытовыми устройствами, например, посредством сервера умного дома, а так же получение показаний с различных датчиков. В простейшем случае это может быть Сервер умного дома MajorDoMo, установленный на микрокомпьютер Raspberry Pi и Wi-Fi реле (розетка) на базе модуля ESP-01 с блоком питания на базе ESP8266.

Настройка MQTT

Предположим, что у нас уже есть установленный на Raspbery Pi MajorDomo, если нет, то стоит обратится к документации размещенной на сайте. Вот, например, ссылка на образ и инструкцию по развертыванию на Raspberry Pi 2 или 3. После развертывания данного образа, все необходимое для работы с MQTT в MajorDoMo уже будет. В противном случае, необходимо установить брокер MQTT Mosquitto вручную. На линукс это делается при помощи одной лишь команды:

sudo apt-get install mosquitto

после чего необходимо перезагрузить сервер MajorDoMo (или только сервис). Затем через оснастку Маркет дополнений Панели управления, в разделе оборудование, найти и установить модуль MQTT.

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

На этом установка и настройка поддержки MQTT на сервере MajorDoMo закончена — можно переходить к прошивке микроконтроллера.

Прошиваем модуль ESP01

Для создания прошивки воспользуемся конструктором прошивок на сайте https://wifi-iot.com на котором можно просто отметив галками нужный функционал скомпилировать нужную прошивку. Часть функций бесплатны, но многие требуют оплаты. При чем, оплатив единовременно 110 российских рублей и активировав версию Pro мы получаем полный функционал для конкретно взятого устройства. Что касается протокола MQTT, то в бесплатной версии не получится по управлять устройствами а так же период обновления равен 10 минутам. В общем нам не подходит, нужна версия Pro. Для любителей халявы, можно отметить, что наверняка в интернете можно найти бесплатные прошивки с нужным функционалом. Итак по порядку:

  • Регистрируемся на сайте wifi-iot.com
  • В разделе ESP8266 отмечаем следующие функции:
    • Сервисы — MQTT клиент — собственно сам клиент;
    • Системные — Web KEY (кнопки в веб-интерфейсе модуля ESP8266)
    • Системные — GPIO (работа со входами и выходами модуля)
    • Системные — Обновление OTA и Auto OTA (перепрошивка модуля по воздуху)
    • Системные — Работа с прерываниями (возможность подключения физических кнопок)
    • Системные — Настройки по умолчанию (возможность сразу задать настройки Wi-Fi).
  • Сохраняем профиль как новый, присвоив ему понятное имя.
  • Нажимаем компилировать и после окончания процесса скачиваем получившийся файл.

Теперь надо прошить модуль. Для этого понадобятся:

  • Сам модуль ESP01
  • USB-UART адаптер с поддержкой напряжения 3,3в. (возможно понадобится драйвер).
  • Внешний блок питания на 3,3в или на 5в с понижающим преобразователем.
  • ПК и программа NodeMCU Flasher
  • Файл blank1m.bin рекомендуется перед прошивкой зашить бланк.
  • И собственно файл прошивки скачанный после компиляции со страницы конструктора.

Питание ESP-01 только от внешнего источника 3,3В (от USB через UART адаптер питания не хватит). Если попробовать запитать от +5В — модуль гарантировано сгорит. Для прошивки модуль подключается следующим образом:

После установки драйвера USB-UART адаптера NODEMCU Flasher автоматически выставит нужный порт.

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

Теперь, для исключения разных возможных глюков, необходимо зашить файл blank1m.bin. Для начала идем на вкладку Advanced и выставляем Flash Size — 1MByte.

На вкладке Config указываем путь к нужному файлу:

И на вкладке Operation наконец нажимаем кнопку Flash:

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

Первый запуск и настройка ESP8266

После включения, если при конструировании прошивки в разделе «Настройки по умолчанию» были указаны правильные данные, то ESP8266 подключится к нужной точке доступа, а полученный модулем IP-адрес можно будет найти в настройках маршрутизатора. Теперь можно войти в веб интерфейс модуля, введя в адресную строку браузера IP-адрес, полученный ESP8266.

Теперь самое время за 110RUR приобрести лицензию и активировать Pro mode, после чего можно приступать к настройке, которая будет заключаться в активации вывода GPIO 02 и прописывании адреса MQTT брокера (наш сервер MajorDoMo). Итак идем на вкладку GPIO:

И выбираем для 2 GPIO режим OUTPUT INVERT (это для того, что бы реле управлялось подачей низкого уровня, т.к. мы будем управлять твердотельным реле подключенным напрямую). Если нужно, что бы модуль после перебоев с питанием помнил свое предыдущее состояние — ставим галку Flash. После нажатия кнопки Set, настройки запомнятся. Пункт ниже — Interrupt, необходим для возможности подключения физических кнопок. Пока его не касаемся. После выхода из меню, на главной странице появится кнопка с номером GPIO, которой можно управлять данным выводом микроконтроллера.

Теперь пропишем адрес MQTT брокера. Идем в меню Servers, отмечаем чекбокс Enable send MQTT и период обновления равным, скажем секундам 10. Затем прописываем адрес сервера MajorDoMo и нажимаем кнопку Set.

Управляем Wi-Fi розеткой (схема включения)

Итак, модуль прошит и настроен, все готово к сборке. Соединяем по следующей схеме:

Источник

ESP + MQTT как основа умного дома

Платы ESP8266 стали очень популярны из-за своей низкой цены и совместимостью с Arduino IDE. Для решения задач устройств «Умного дома» они просто идеальны. ESP требует только подключения питания, а сбор и отправку данных она может осуществлять по Wi-Fi через домашний роутер.

Одним из популярных открытых протоколов связи для Умного дома является MQTT. Его основа — обычные http(s) сокет соединение. Протокол по сути дела описывает лишь язык, а не способ доставки данных. MQTT требует наличие сервера — брокера, который объединяет подключенные устройства в сеть. Сами же устройства при подключении подписываются на топики в которых отсылаются данные и брокер отсылает только те топики устройству, которые ему нужны.

Получить к возможность подключиться к брокер серверу можно двумя способами: воспользоваться бесплатными MGTT брокерами или поднять свой собственный сервер (путь самурая).

Первый вариант самый простой. Из бесплатных я бы рекомендовал cloudmqtt.com. Там есть ограничения по количеству устройств и запросов, но для домашнего использования этого более чем достаточно. При регистрации выдается логин, пароль, сервер к которому нужно делать коннект, тип соединения (с/без ssl).

Свой брокер поднять не на много сложнее. Дольше уйдет время на настройку окружения, чем на поднятие брокера. Сделать это можно на nodeJs с npm пакетом mqtt. Примеры можно посмотреть на сайте расширения. Но это уже выходит за рамки данной статейки.

Вернемся к нашей ESP. Из этих устройств мы соберем периферию по сбору данных. Для реализации устройств удобно использовать модуль ESP8266 ESP-12. Он имеет встроенный стабилизатор на 3.2 вольта и множество свободных GPIO для подключения периферии. Цена так себе, если паяльник не вызывает страха, то можно замутить на 01/07 модулях. На али такие меньше чем за 2$ за штуку можно отхватить.

Настройка Arduino IDE

Для прошивки ESP будем использовать Arduino IDE. Просто так взять и залить скетч нельзя. Для начала нужно подготовить настроить IDE для работы с платой ESP.

Запускаем наше IDE и идем в Файл — Настройки.

Прописываем ссылку на менеджер плат http://arduino.esp8266.com/stable/package_esp8266com_index.json
Теперь выбираем Инструменты — Плата — Менеджер плат. В конце списка мы увидим esp8266 by esp8266 Community.

Выбираем последнюю версию и жмем Установить.

Esp прошивает на другой скорости чем чипы Atmega и по тому нам нужно в первую очередь изменить скорость uart. Инструменты — Upload Speed:-115200:

Не забываем задать тип платы: Инструменты — Generic ESP8266 Module.

Ну и все, наше IDE готово загружать скетч в ESP. Если вы счастливый обладатель ESP8266 ESP-12 — переключаем в режим программирования, тыкаем usb, выбираем COM порт и погнали. Если плата попроще (ESP8266-01), не беда. Подключаем GPIO0 на землю, USB-UART «свисток», подаем стабильные 3.2 вольт и наша дешевая плата тоже готова принять скетч. Распиновка подключения для 01:

Скетч для MQTT

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

Код выполняет соединение к Wi-Fi точке доступа в квартире, через интернет соединяется к брокер серверу. Подписывается на топики test/1 и test/2. Отсылает раз в 3 секунды значение системного счетчика. В общем, ничего лишнего.

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

Настройка клиента на телефоне

Скачиваем приложение в маркетплейсе Android/iPhone — IoT MQTT Dashboard или любое аналогичное. Они все работают одинаково.

В запущенном приложении нужно задать хост, логин, пароль, порт брокер-сервера.

Далее мы попадаем на страницу подписок. Задаем наши два топика «test/1» и «test/2» — теперь мы всегда будем видеть последние присланные значения этих топиков. Это может быть температура воздуха или влажность земли в теплице. Есть поддержка передачи изображения в base64, но это уже совсем другая история.

На втором экране мы можем создать управляемые контролы: кнопки, переключатели, выбор цвета, мультиселек, поле ввода текста. Добавляем переключатели и вбиваем в них наши топики «test/1» и «test/2». Запускаем и видим как переключение топиков сразу же вываливает в консоль UART микроконтроллера ответы. Колдунство!

Данная инструкция открывает простор перед фантазией разработчика. С ее помощью можно сделать компоненты умного дома, которые будут управлять RGB лентой, защищать квартиру от протечек, управлять пелетным/газовым котлом и многое другое.

Источник

Читайте также:  Установка телевизионных розеток legrand