Одна статья о MQTT (решение ESP8266+DHT11+MQTT+MYSQL)
Одна статья о MQTT (решение ESP8266+DHT11+MQTT+MYSQL)

В этой статье давайте поговорим об esp8266, использующем для связи протокол mqtt. и сохранить данные в базу данных.

О MQTT

MQTT (протокол телеметрии очереди сообщений) — это «легкий» протокол связи, основанный на режиме публикации/подписки. Самым большим преимуществом MQTT является то, что он использует очень мало кода и ограниченную полосу пропускания для подключения удаленных устройств. Обеспечивает надежный обмен сообщениями в реальном времени. услуги.

Создайте MQTT-сервер.

Здесь мы используем emqx для сборки сервера mqtt в centos. Официально предоставляет интуитивно понятный метод установки.,Чрезвычайно просто。То, что я установил здесь, этоEMQX5.0(Корпоративная версия)

Язык кода:javascript
копировать
wget https://www.emqx.com/zh/downloads/enterprise/v5.0.0/emqx-enterprise-5.0.0-el7-arm64.rpm
yum install emqx-enterprise-5.0.0-el7-arm64.rpm
sudo systemctl start emqx

Следует отметить, что,Попробуй не скачивать последнюю версию。Потому что многие функции последней версии стоят денег.。Больше исторических версий можно скачать здесь.https://www.emqx.com/zh/downloads/enterprise

Затем введите начальный аккаунтadmin publicАвторизоваться。

Настроить esp8266

Нам нужно отправить данные DHT11 через протокол mqtt. Код горения следующий.

Язык кода:javascript
копировать
#include "DHT.h"
#include <ESP8266WiFi.h>
#include <PubSubClient.h>

/************ WIFI and MQTT Information (CHANGE THESE FOR YOUR SETUP) ******************/
const char* ssid = "PDCN"; //type your WIFI information inside the quotes
const char* password = "1234567890";
const char* mqtt_server = "192.168.123.173";
const char* mqtt_username = "admin";
const char* mqtt_password = "admin";
const int mqtt_port = 1883;
const char* mqtt_sensor_topic = "dht11";
unsigned long last_send = 0;

#define DHTPIN 4 
#define DHTTYPE DHT11 
DHT dht(DHTPIN, DHTTYPE);

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
  Serial.begin(115200);
  dht.begin();

  setupWifi();
  client.setServer(mqtt_server, mqtt_port);
}

// соединять Wifi
void setupWifi() {
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop()
{
  if ( !client.connected() ) { // MQTT Успешно ли сотрудничать?
    reconnect();
  }
  if ( millis() - last_send > 5000 ) { // Публикуйте данные о температуре и влажности каждые 5 секунд.
    handleTemperatureAndHumidity();
    last_send = millis();
  }
  client.loop();
}

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (client.connect(mqtt_sensor_topic, mqtt_username, mqtt_password)) {
      Serial.println("connected");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      delay(5000);
    }
  }
}

void handleTemperatureAndHumidity() {
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  if (isnan(h) || isnan(t) ) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }
  // Подготовьте JSON Payload
  String payload = "{";
  payload += "\"temp\":"; payload += t; payload += ",";
  payload += "\"humi\":"; payload += h;
  payload += "}";

  // Отправить данные о температуре и влажности
  char attributes[100];
  payload.toCharArray( attributes, 100 );
  client.publish( mqtt_sensor_topic, attributes );
  Serial.println( attributes );
}

В приведенном выше коде,Мы представилиPubSubClientиDHTБиблиотека。существоватьide中安装这两个Библиотека。(Обратите внимание на версию,Если он слишком высок, он может не скомпилироваться)

Загрузите код в esp8266. Через некоторое время мы видим в emqx, что устройство онлайн.

Просмотр данных о подписке

В приведенном выше коде,Наша тема подписки:dht11。скачатьmqttинструментmqttx。Создать новыйсоединять。

Конкретная конфигурация выглядит следующим образом

После завершения подключения добавьте подписку

Таким образом, данные dht11 в esp8266 успешно получены.

Следует отметить, что,Нам нужно обработать данные в данные json.,方便后期入Библиотека。нравиться{"temp":23.40,"humi":57.00}

Сохраняем данные в mysql

Чтобы упростить обработку данных в дальнейшем, мы можем сохранить их в MySQL. Конкретные операции заключаются в следующем:

Нажмитеданныеперекрытие-создавать-Тип ресурса — MySQL.,Заполните соответствующиеmysqlАккаунт и другая информация,и тест,намекатьдоступные ресурсыЭто доказывает, что проблем нет。

Содержимое шаблона sql следующее:

Язык кода:javascript
копировать
insert into wendu ( temp, humi,time) values (${temp}, ${humi},FROM_UNIXTIME(${time}/1000) )

Простой оператор вставки sql,即существоватьwenduстолtemp humi timeВставьте соответствующее значение в поле。

После завершения настройки,Он автоматически предложит вам настроить соответствующие правила.

Код выглядит следующим образом

Язык кода:javascript
копировать
SELECT
  timestamp as time, payload.temp as temp ,payload.humi as humi #Получите значение и присвойте его переменной, обратите внимание на разделение запятыми.
FROM
  "dht11" # данныеLaizi подписался на тему dht11

Сейчас,我们существоватьmysql中Создать новыйwenduстол。исоздаватьtemp humiиtimeПоле。

Конечный эффект следующий.

Авторские права принадлежат: старшему двоюродному брату Сяояози.

Ссылка на эту статью:https://cloud.tencent.com/developer/article/2295611

Лицензия: Creative Commons Attribution-NonCommercial 4.0 International. Перепечатка цитируемых статей регулируется той же лицензией.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose