Мини-гайд по MQTT(Управление умным домом). Управление светом на ESP8266.
MQTT (Message Queue Telemetry Transport) — упрощённый сетевой протокол, работающий поверх TCP/IP. Используется для обмена сообщениями между устройствами по принципу издатель-подписчик(pub-sub).
Возможности(фичи):
- Прост в использовании. Протокол представляет собой программный блок без лишней функциональности, который может быть легко встроен в любую сложную систему;
- Шаблон проектирования издатель-подписчик удобен для большинства решений с датчиками. Дает возможность устройствам выходить на связь и публиковать сообщения, которые не были заранее известны или предопределены;
- Легок в администрировании;
- Снижена нагрузка на канал связи;
- Работа в условиях постоянной потери связи или других проблем на линии;
- Нет ограничений на формат передаваемого контента.
Алгоритм работы системы следующий. Клиенты подключаются к серверу и сразу после подключения каждый из них осуществляет подписку на и интересующие его топики. Всё общение между клиентами проходит транзитом через сервер, который перенаправляет данные другим клиентам с учетом их подписок.
Для начала нам нужен Broker(сервер, который будет обрабатывать запросы), тут есть пару вариантов:
1) https://www.cloudmqtt.com/ регистрируемся тут с ограничением в 10кб/с(вполне хватит для наших целей), после чего нам выдаст все данные для входа
2)Ставим свой сервер на linux (apt-get install mosquitto и apt-get install mosquitto-clients) и запускаем.(Я использовал этот вариант)
Сервер запущен! Теперь:
- качаем любую аппку для ведроида(например MQTT Dash).
- добавляем свой broker(указываем логин, пароль, хост, порт: по умолчанию 1883)
После этого нам надо создать кнопку и указать топик, в которой мы будем публиковать значение(вкл\выкл свет). Например, пусть это будет home/room1/light. (фото №4-5).
Теперь заливаем измененный скетч(перед этим ставим библиотеку), все прикреплено.
P.S. С linux также можно управлять или подписываться таким образом:
mosquitto_pub -h <хост> -t <топик> -m <послание> // публикуем на <хост> в <топик> сообщение <послание>
mosquitto_sub -h <хост> -t <топик> // подписываемся
#mqtt@club_arduino
#mosquitto@club_arduino