Включаем библиотеку WiFi ESP8266, которая предоставляет специальные процедуры WiFi для ESP8266, и мы называем ее для подключения к сети. Библиотека PubSubClient позволяет клиенту публиковать / подписывать сообщения с помощью сервера поддержки MQTT.
#include <EEPROM.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <Wire.h>
Получите и введите «ssid» и «пароль», т.е. ваше имя и пароль WiFi.
const char * ssid = "ИМЯ СЕРВЕРА";
const char * password = "ПАРОЛЬ СЕРВЕРА";
Получите и введите имя «MQTT Server» и уникальный идентификатор. Назначьте MQTT в качестве клиента для ESP8266.
const char * mqtt_server = "m11.cloudmqtt.com";
const char * device_id = "esp8266";
Выберите цифровой вывод D5 NodeMCU для выполнения операции управления светодиодом и инициализируйте массив message_buff с типом char.
константный байт ledPin5 = 14;
char message_buff [100];
Пишем функцию для чтения символов с последовательного монитора и управления включением и выключением светодиода в соответствии с инструкциями, передаваемыми из приложения MQTT Dashboard Play Store.
void callback (char * led_control, byte * payload, unsigned int length)
{
Serial.print ("Сообщение прибыло [");
Serial.print (led_control);
Serial.println ("]");
int i;
для (i = 0; i & length; i ++)
{
message_buff [i] = полезная нагрузка [i];
}
message_buff [i] = '\ 0';
String msgString = String (message_buff);
Serial.println (msgString);
if (strcmp (led_control, "esp8266 / led_control") == 0)
{
if (msgString == "1")
{
digitalWrite (ledPin5, LOW);
}
if (msgString == "0")
{
digitalWrite (ledPin5, HIGH);
}
}
}
Фактическое подключение к серверу MQTT инициализируется путем вызова приведенных ниже инструкций. Мы должны ввести имя пользователя, пароль и уникальный идентификатор cloudmqtt в соответствующем месте. Если клиент подключен, то мы можем контролировать работу подключенного светодиода NodeMCU через приложение MQTT Dash.
voidconnect ()
{
while (! client.connected ())
{
Serial.print («Попытка подключения MQTT ...»);
if (client.connect (device_id, "CLOUD USER NAME", "CLOUD PASSWORD"))
{
Serial.println ( "подключен");
client.subscribe ( "esp8266 / led_control");
}
Если клиент не подключен, он будет пытаться подключаться снова и снова каждые 5 секунд.
else
{
Serial.print ("failed, rc =");
Serial.print (client.state ());
Serial.println («повторите попытку через 5 секунд»);
Задержка (5000);
}
}
}
Поместите ваш код настройки или конфигурации в функцию настройки, он будет запускаться только один раз при запуске.
Здесь, в функции настройки, он подключится к сети Wi-Fi, а также инициализирует последовательную связь для отладки и ведения журнала со скоростью передачи 115200 бод. Измените номер порта, как указано в консоли cloudmqtt. Настройка режима работы в качестве выхода для вывода D5 NodeMCU.
void setup ()
{
Serial.begin (115200);
client.setServer (mqtt_server, 1883);
client.setCallback (обратный вызов);
pinMode (ledPin5, OUTPUT);
}
Поместите ваш основной код в функцию void loop () для повторного запуска. Это постоянно ждет и проверяет подключение клиента.
void loop ()
{
if (! client.connected ())
{
восстановить ();
}
client.loop ();
}