- esp8266 — Сообщество разработчиков
- IoT Manager — мобильное приложение для DIY устройств
- Быстрый старт
- Push уведомления
- Настройки IoT Manager
- Дополнительные возможности IoT Manager
- Планы на будущее
- Ссылки по теме
- Быстрый старт
- Profit!
- Push уведомления
- Настройки приложения
- Дополнительные возможности
- Планы на будущее
- Esp8266 управление через интернет по протоколу MQTT
esp8266 — Сообщество разработчиков
IoT Manager — мобильное приложение для DIY устройств
IoT Manager может обмениваться командами и данными с любыми устройствами, поддерживающими MQTT. Я продемонстрирую вам взаимодействие с ESP8266, причем сразу с двумя модулями. В этот раз я не буду поднимать локальный MQTT брокер (в одной из предыдущих статей мы поднимали mosquito на OpenWRT), а воспользуемся бесплатным аккаунтом (до 10 клиентов) CloudMQTT.com. Подробности под катом.
IoT Manager — это гибридное (не нативное) приложение, созданное с помощью Ionic Framework, на HTML5 и AngularJS, обмен с брокером реализован на Paho, который обеспечивает полное соответствие стандарту MQTT. Отличает это приложение от других: расширенные возможности отладки, отправка push уведомлений через OneSignal HTTPS REST API и html-based настройка внешнего вида виджетов.
Быстрый старт
Push уведомления
Настройки IoT Manager
Дополнительные возможности IoT Manager
Планы на будущее
Ссылки по теме
Быстрый старт
Начать лучше с регистрации бесплатного аккаунта на CloudMQTT.com, но вы можете использовать любой MQTT брокер (главное, чтобы была возможность подключения через WebSockets), в том числе и установленный в вашей локальный сети.
Примечание: если вы хотите управлять устройствами из любой точки земного шара, для CloudMQTT дополнительно делать ничего не нужно, а вот в случае использования брокера в вашей локальный сети вам придется пробросить WebSockets порт брокера во внешний мир на вашем маршрутизаторе, но описание этого выходит за рамки данной статьи.
Предупреждение. Пожалуйста, не используйте имена пользователей и пароли из скриншотов в этой статье. Я сам ими реально не пользуюсь, сделал только для этой статьи. Если хотя бы два читателя одновременно запустят примеры с этими данными, то возникнет путаница и вы толком не сможете разобраться как все работает.
После регистрации на CloudMQTT.com идем в Control Panel. Здесь нам нужно создать брокер кнопочкой Create, даем произвольное название брокеру, выбираем датацентр (Европа или США), тарифный план не трогаем (по умолчанию — бесплатный Cute Cat). Я создал сразу два: TEST в Европе и TEST2 в США.
Жмем на кнопку Details.
Здесь нас интересует только имя хоста m11.cloudmqtt.com и WebSockets порт 30927 (для мобильного приложения), то же имя хоста и порт 10927 берем для скетча Arduino IDE нашего DIY устройства. Имя пользователя и пароль, в этом разделе, указаны для юзера облачного хоста, под которым крутится брокер mosquito, и вам их лучше не использовать в клиентах в целях безопасности. Нужно создать нового пользователя. Я сделал пользователя test с паролем test. Далее ему нужно дать права на чтение и запись на все топики (ставим просто #). В итоге должно получиться так:
В дальнейшем, после того, как все заработает, можете прописать права более детально. Можно сделать разных юзеров для мобильного приложения и IoT девайсов.
Идем далее. На этом шаге я бы посоветовал вам установить и настроить mqtt-spy, чтобы видеть все, что происходит на нашем брокере, но этот шаг не является обязательным.
Устанавливаем IoT Manager на ваш смартфон/планшет. IoT Manager не начнет работать до тех пор, пока вы не сделаете настройки подключения:
Если вы все сделали правильно, то увидите сообщение об успешном подключении к брокеру и вас перебросит на главный экран приложения:
Пусть вас не смущает No data — это нормально до тех пор, пока не запущены ваши IoT устройства, так как именно в них прописаны все настройки. Главное сейчас — это зеленый индикатор (в верхнем правом углу) успешного соединения с CloudMQTT.
Далее скачиваем с https://gist.github.com/4refr0nt/ IoTmanager.ino или IoTmanager2.ino или оба скетча, если у вас под рукой две платы ESP8266. Исправляем в скетче WiFi SSID и пароль на ваши, вводим адрес вашего mqtt брокера, порт 10927 (не WebSockets), пользователя и пароль (test, test). В скетче Arduino IDE указывается адрес хоста, а не его имя. Чтобы узнать IP адрес любого хоста по его имени, можно в командной строке выполнить ping имя_вашего_cloudmqtt_хоста, и вы увидите необходимый вам адрес.
С помощью ESP8266 Arduino IDE заливаем все это в ESP8266.
Profit!
Примечание 1. Эти скетчи были набросаны мною по-быстрому и отнюдь не идеальны. В реальных проектах вам может потребоваться сохранение состояний GPIO, вы захотите подключить реальные датчики, а не бесполезный фоторезистор на ADC, оптимизировать код. Я не стал этого делать, чтобы не загромождать код, моей задачей было показать возможности приложения. Если у вас возникнет желание поделиться своими наработками — публикуйте свои работы на нашем форуме, это очень поможет новичкам и будет вполне интересно и для более опытных.
Примечание 2. Железо и прошивки ваших IoT девайсов могут быть любыми, не обязательно ESP8266. Это вполне может быть Arduino с Ethernet или WiFi шилдом, RaspberryPi или другое устройство. При использовании ESP8266 прошивка на борту может быть любой, лишь бы поддерживала MQTT для датчиков и/или HTTPS для push уведомлений. Мне, да и многим нашим читателям, было бы очень интересно увидеть различные примеры. Публикуйте свои работы на нашем форуме
Push уведомления
Еще один вариант использования приложения: push уведомления. На видео и демо скетчах push уведомление приходит на смартфон каждые 10 секунд, если значение ADC, подключенного к фоторезистору, более 100 (для этого на видео я накрываю всю плату светонепроницаемой коробкой). Если вы управляете своим устройством без использования IoT Manager, а каким-то другим способом, но не имеете возможности отправлять push уведомления — IoT Manager вам поможет. Никаких настроек приложения не требуется, брокер не используется. Необходимо только, хотя бы один раз, запустить приложение. При первом запуске приложения происходит автоматическая регистрация вашего смартфона на сервисе OneSignal.com, ему присваивается уникальный идентификатор, который вы можете увидеть на странице статистики. Далее, в своих IoT устройствах, вы можете настроить отправку специально сформированного HTTPS POST запроса, при выполнении заданных вами условий, и сможете получать push уведомления на все смартфоны и планшеты, на которых установлен IoT Manager и id которых вам известны. Прием push уведомления на смартфон происходит вне зависимости от того, запущено мобильное приложение или нет. Прием push уведомлений можно приостановить/возобновить в настройках IoT Manager.
Настройки приложения
- Enable events logging — включает/отключает логгирование событий, которые можно потом посмотреть в журнале
- Enable Toast messages — включает/отключает отображение всплывающих сообщений (тостов), которые уведомляют вас о важных событиях
- Enable Push notifications — включает/отключает прием PUSH уведомлений. PUSH уведомления могут генерироваться вашими IoT устройствами и их получение не зависит от того, запущено ли приложение.
- Reconnect after connection lost — включает/отключает автоматическое переподключение к брокеру при проблемах связи
- Show connection status — включает/отключает индикатор текущего состояния подключения к брокеру в верхнем правом углу на всех страницах приложения
- End-user mode — включает/отключает режим конечного пользователя. Этот специальный режим можно включить, когда вы закончили отладку и установили приложение человеку, далекому от брокеров, портов и логов — большинство страниц приложения, предназначенных для отладки вашей системы, будут скрыты, как и настройки подключения к брокеру. Останутся лишь главная панель управления, разделы настройки и помощи.
Дополнительные возможности
View log. Если в настройках включен режим логгирования, то здесь вы увидите все события, которые происходят (точнее, последние 100 записей). Это и публикация данных в топики, поступление данных от устройств и остальные события. Логи будут незаменимы для отладки, особенно если вы не пользуетесь mqtt-spy.
Subscribed — это список топиков, на которые вы подписаны. Для отладки.
Publish — дает возможность опубликовать данные в произвольный топик. Для отладки.
Statistics — простой подсчет принятых/отправленных сообщений. Также на этой странице вы можете увидеть ID вашего девайса (необходим для отправки push уведомлений с ваших IoT устройств). Вы можете отправить ID к себе на почту для дальнейшего использования.
Примечание. Нет смысла пытаться использовать ID из скриншота — он недействителен.
Планы на будущее
Если приложение окажется популярным, то я его буду развивать и дальше. В планах — разделение панели управления на несколько страниц, в соответствии с местом установки сенсоров; добавление новых типов виджетов; механизм смены скинов. Надеюсь, что сообщество предложит и другие полезные функции.
Если удастся монетизировать приложение более 100$, то опубликую в Apple AppStore версию для IOS (у Apple нужно ежегодно оплачивать аккаунт). Встраивать рекламу или делать приложение платным я считаю нецелесообразным, так что если у вас появится желание финансово поддержать проект, то это будет только приветствоваться.
Источник
Esp8266 управление через интернет по протоколу MQTT
Всем привет! В этой статье будет подробно рассказано и показано как буквально за 20 минут свободного времени настроить дистанционное управление модулем esp8266 с помощью приложения на Android по протоколу MQTT.
Идея дистанционного управления и мониторинга всегда будоражила умы увлеченных в электронике и программировании людей. Ведь возможность в любой момент времени получить или отправить нужные данные, не зависимо от своего местоположения, дает широкие возможности. В своих прошлых статьях ( Статья 1 и Статья 2) я пытался рассмотреть несколько доступных и относительно простых вариантах реализации дистанционного управления микроконтроллерами через интернет. Однако время и весь мир не стоит на месте – прогресс продолжает свое неумолимое движение вперед. За это небольшое время приобрел широкую популярность модуль esp8266 который благодаря низкой цене и встроенному wi-fi стал одним из основных составляющих «Умного дома».
На данный момент MQTT является передовым и наиболее популярным протоколом передачи данных между отдельными устройствами в рамках систем «Умного дома». Он обладает рядом преимуществ по отношению к другим протоколам:
— низкое потребление трафика;
— соединение между клиентом и сервером всегда открыто;
— не нагружает интернет канал;
— отсутствие задержек в передаче данных;
— удобная система подписок на топики;
Всё это дает возможность мониторинга и управления в режиме реального времени. Однако MQTT требует наличие своего собственного сервера, который выполняет роль посредника между клиентами сети. Тут есть два выхода либо создавать свой сервер либо использовать сторонние сервисы.
Описываемая система управления состоит из двух основных частей: сервера MQTT (он как правило один) и клиентов, которых может быть довольно много. В нашем случае в качестве клиентов будут выступать приложение на Android и сам модуль esp8266.
Алгоритм работы системы следующий. Клиенты подключаются к серверу и сразу после подключения каждый из них осуществляет подписку на и интересующие его топики. Всё общение между клиентами проходит транзитом через сервер, который перенаправляет данные другим клиентам с учетом их подписок.
В нашем случае мы будем использовать крайне удобный сервис www.cloudmqtt.com у которого есть бесплатный тарифный план (Cute Cat), который полностью покроет потребности для реализации небольшой собственной системы «умного дома».
Пройдём регистрацию на сайте и получаем необходимые данные для доступа к серверу. При настройке клиентов необходимо использовать обычный Порт ( без SSL и TLS).
Приложение на Android.
Наше приложение будет выступать в качестве пульта управления для микроконтроллера, а так же будет принимать и отображать всю получаемую информацию от esp8266.
Приложение называется IoT MQTT Dashboard и представляет собой готовый mqtt клиент с небольшим количеством очень удобных виджетов. Более подробно о работе с приложением можно посмотреть на видео.
Модуль прошивается в среде программирования Arduino, однако хочу заметить что у модуля проблемы с прошивкой в последних версиях Arduino, поэтому рекомендую использовать версию 1.6.4.
Для примера к esp8266 подключены светодиод (5 пин) и датчик температуры ds18b20 (2 пин).
Так как для управления светодиода необходимо получать данные, то esp после подключения должно оформить подписку на соответствующий топик «test/led» иначе все отправленные данные пройдут мимо нашего микроконтроллера.
Для отправки данных температуры подписка не нужно, но при передаче значений температуры необходимо указывать топик в который эти данные пойдут.
Ниже приведен скетч с подробными комментариями.
// Светодиод подлкючен к 5 пину
// Датчик температуры ds18b20 к 2 пину
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
const char *ssid = «AIRPORT»; // Имя вайфай точки доступа
const char *pass = «PASSWORD»; // Пароль от точки доступа
const char *mqtt_server = «server»; // Имя сервера MQTT
const int mqtt_port = 11140; // Порт для подключения к серверу MQTT
const char *mqtt_user = «Login»; // Логи от сервер
const char *mqtt_pass = «Pass»; // Пароль от сервера
#define BUFFER_SIZE 100
bool LedState = false;
int tm=300;
float temp=0;
// Функция получения данных от сервера
void callback(const MQTT::Publish& pub)
<
Serial.print(pub.topic()); // выводим в сериал порт название топика
Serial.print(» => «);
Serial.print(pub.payload_string()); // выводим в сериал порт значение полученных данных
String payload = pub.payload_string();
if(String(pub.topic()) == «test/led») // проверяем из нужного ли нам топика пришли данные
<
int stled = payload.toInt(); // преобразуем полученные данные в тип integer
digitalWrite(5,stled); // включаем или выключаем светодиод в зависимоти от полученных значений данных
>
>
WiFiClient wclient;
PubSubClient client(wclient, mqtt_server, mqtt_port);
sensors.begin();
Serial.begin(115200);
delay(10);
Serial.println();
Serial.println();
pinMode(5, OUTPUT);
>
void loop() <
// подключаемся к wi-fi
if (WiFi.status() != WL_CONNECTED) <
Serial.print(«Connecting to «);
Serial.print(ssid);
Serial.println(«. «);
WiFi.begin(ssid, pass);
if (WiFi.waitForConnectResult() != WL_CONNECTED)
return;
Serial.println(«WiFi connected»);
>
// подключаемся к MQTT серверу
if (WiFi.status() == WL_CONNECTED) <
if (!client.connected()) <
Serial.println(«Connecting to MQTT server»);
if (client.connect(MQTT::Connect(«arduinoClient2»)
.set_auth(mqtt_user, mqtt_pass))) <
Serial.println(«Connected to MQTT server»);
client.set_callback(callback);
client.subscribe(«test/led»); // подписывааемся по топик с данными для светодиода
> else <
Serial.println(«Could not connect to MQTT server»);
>
>
if (client.connected()) <
client.loop();
TempSend();
>
>
> // конец основного цикла
// Функция отправки показаний с термодатчика
void TempSend() <
if (tm==0)
<
sensors.requestTemperatures(); // от датчика получаем значение температуры
float temp = sensors.getTempCByIndex(0);
client.publish(«test/temp»,String(temp)); // отправляем в топик для термодатчика значение температуры
Serial.println(temp);
tm = 300; // пауза меду отправками значений температуры коло 3 секунд
>
tm—;
delay(10);
>
В результате мы получаем удобный инструмент для дистанционного управления и мониторинга данных, который довольно прост в освоении и будет по силу даже начинающим.
Видео с демонстрацией работы системы управления
Подробная видеоинструкция по настройке системы
Один из вариантов применения управления esp8266 через MQTT протокол
Управление светодиодной лентой через интернет
Если у вас возникли вопросы по данному материалу, то рекомендую посмотреть вторую часть видео, где материал изложен более наглядно.
В архиве находятся скетч и все необходимые библиотеки для прошивки микроконтроллера скетчем из примера.
Обращаю ваше внимание, что библиотека ESP8266WiFi.h не входит в данный архив, она устанавливается через Boards manager в среде Arduino.
Источник