Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
В этом уроке будет показано базовое использование протокола MQTT на плате NodeMCU. Мы используем MQTTBox в качестве клиента MQTT здесь, и мы будем использовать NodeMCU для выполнения следующих операций:
Публикуйте «hello world» в теме «outTopic» каждые две секунды. Подпишитесь на тему «inTopic», распечатайте все полученные сообщения. Предполагается, что полученные полезные данные являются строками, а не двоичными файлами. Если подписанное сообщение имеет значение «1», зажгите индикатор светодиод на плате. Выключите светодиод на плате, если сообщение о подписке равно «0».
Подготовка: Osoyoo NodeMCU x1
USB-кабель x1
ПК x1
Arduino IDE (Версия 1.6.4+)
Подключите NodeMCU к ПК через USB-кабель.
Шаг 1: установка библиотеки
Установить PubSubClientlibrary
Для связи с брокером MQTT нам необходимо установить библиотеку конечных точек MQTT (PubSubClient). Загрузите библиотеку по следующей ссылке:
Разархивируйте указанный выше файл, переместите распакованную папку в папку библиотеки Arduino IDE.
Откройте Arduino IED, вы можете найти «pubsubclient» в столбце «Примеры».
Установите клиент MQTT:
мы будем использовать MQTTBox в качестве клиента MQTT. пожалуйста, загрузите с:
Шаг 2: Код
откройте Arduino IDE–> Файл–> Пример–> pubsubclient–> mqtt esp8266, вы получите образец кода.
Отредактируйте код, чтобы он соответствовал вашим собственным настройкам WiFi и MQTT, выполнив следующие операции: 1) Конфигурация точки доступа: найдите приведенную ниже строку кода, введите там свой собственный ssid и пароль.
const char * ssid = «your_hotspot_ssid»; const char * password = «your_hotspot_password»;
2) Настройка адреса сервера MQTT, здесь мы используем бесплатный брокер MQTT "broker.mqtt-dashboard.com". Вы можете использовать свой собственный URL-адрес или IP-адрес брокера MQTT, чтобы задать значение выше mqtt_server. Вы также можете использовать какой-нибудь известный бесплатный сервер MQTT для тестирования проекта, например «broker.mqtt-dashboard.com», «iot.eclipse.org» и т. Д.
const char * mqtt_server = «broker.mqtt-dashboard.com»;
3) Настройки клиента MQTT Если вашему брокеру MQTT требуется проверка подлинности идентификатора клиента, имени пользователя и пароля, вам необходимо
изменение
если (client.connect (clientId.c_str ()))
К
if (client.connect (clientId, userName, passWord)) // введите здесь свой clientId / userName / passWord
Если нет, просто оставьте их по умолчанию. После этого выберите соответствующий тип платы и тип порта, как показано ниже, затем загрузите скетч в NodeMCU.
- Плата: «NodeMCU 0.9 (модуль ESP-12)»
- Частота процессора: «80 МГц» Размер флеш-памяти: «4M (3M SPIFFS)»
- Скорость загрузки:”115200 ″
- Порт: выберите собственный последовательный порт для вашего NodeMCU.
Шаг 3. Настройте клиент MQTT (MQTTBOX)
На этом этапе мы покажем, как создать клиент MQTT в MQTTBox.
Откройте свой MQTTBox и нажмите синюю кнопку, чтобы добавить нового клиента MQTT.
Настройте ПАРАМЕТРЫ КЛИЕНТА MQTT, как показано ниже:
- Имя клиента MQTT - выберите любое имя, которое вам нравится
- Протокол - выберите «mqtt / tcp».
- Хост - введите свой «mqtt_server» в этот столбец, убедитесь, что он такой же, как и ваш скетч (здесь мы используем «broker.mqtt-dashboard.com»).
- Оставить другие настройки по умолчанию
- Щелкните, чтобы сохранить изменения.
Затем вы автоматически войдете на новую страницу. Если все вышеупомянутые настройки верны, «Не подключен» изменится на «Подключен», ваше имя клиента MQTT и имя хоста будут отображаться в верхней части этой страницы.
Настройка темы: убедитесь, что тема публикации вашего MQTT-клиента такая же, как и тема подписки на эскиз Arduino (здесь inTopic). Убедитесь, что тема подписки вашего MQTT-клиента такая же, как и тема публикации скетча Arduino (здесь outTopic).
Шаг 4: Результат выполнения программы
После завершения загрузки, если настройки имени и пароля точки доступа Wi-Fi в порядке и брокер MQTT подключен, откройте Serial Monitor, вы увидите сообщение публикации «hello world» на последовательном мониторе.
Затем откройте клиент MQTT и опубликуйте полезную нагрузку «1» в теме, этот NodeMCU получит эти сообщения, подписавшись на «inTopic», и загорится светодиод.
Опубликуйте полезную нагрузку «0» в этой теме, индикатор NodeMCU погаснет.