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