EMQ X 存储消息到 MySQL 数据库
发布日期:2021-06-28 13:36:20 浏览次数:2 分类:技术文章

本文共 4353 字,大约阅读时间需要 14 分钟。

实现MQTT数据在MySQL上的数据持久化实验

MQTT 是轻量级的、灵活的物联网消息交换和数据传递协议,致力于为 IoT 开发人员实现灵活性与硬件/网络资源的平衡。

ESP8266 提供了⼀套⾼度集成的 Wi-Fi SoC 解决⽅案,其低功耗、 紧凑设计和⾼稳定性可以满⾜⽤户的需求。ESP8266 拥有完整的且⾃成体系的 Wi-Fi ⽹络功能,既能够独⽴应⽤,也可以作为从机搭载于其他主机 MCU 运⾏。

在此项目中我们将实现 ESP8266 连接到 EMQ X Cloud 运营和维护的免费公共 MQTT 服务器,并使用 Arduino IDE 来对 ESP8266 进行编程。 EMQ X Cloud 是由 EMQ 推出的安全的 MQTT 物联网云服务平台,它提供一站式运维代管、独有隔离环境的 MQTT 5.0 接入服务。

所需物联网组件

ESP8266、DHT11Arduino IDEMQTT X: 跨平台 MQTT 5.0 客户端工具免费的公共 MQTT 服务器    Broker: broker.emqx.io    TCP Port: 1883    Websocket Port: 8083

步骤

(1)数据采集与上传

在这里插入图片描述在这里插入图片描述在这里插入图片描述

(2)串口打印信息

在这里插入图片描述

(3)用MQTTX进行调试也能接收到发送的数据

在这里插入图片描述

(4)搭建MQTT服务器

(5)云端数据库搭建与设计表格
在这里插入图片描述

(6)数据解析以及数据永久化

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

ESP8266 代码编写

#include 
//#include
#include
#include
#include "DFRobot_DHT11.h" // WiFi const char *ssid = "602iot"; // Enter your WiFi name const char *password = "18wulian"; // Enter WiFi password //const char * WIFI_SSID = "602iot"; //const char * WIFI_PASSWORD = "18wulian"; // MQTT Broker const char *mqtt_broker = "b3b1fcb9.cn.emqx.cloud";//EMQX CLOUD连接地址 const char *topic = "temp_hum/emqx"; const char *mqtt_username = "111"; const char *mqtt_password = "123456"; const int mqtt_port = 11107;//mqtt端口 // DHT11 #define DHT11_PIN D4//定义DHT11的引脚 //#define DHT11_PIN 13//定义DHT11的引脚 unsigned long previousMillis = 0; WiFiClient espClient; PubSubClient client(espClient); DFRobot_DHT11 DHT; //void connectWiFi(){
// Serial.print("Connecting to "); // Serial.println(WIFI_SSID); // WiFi.begin(WIFI_SSID,WIFI_PASSWORD); // while(WiFi.status() != WL_CONNECTED){
// delay(500); // Serial.print("."); // } // Serial.println(); // Serial.println("WiFi connected"); // Serial.print("IP Adderss: "); // Serial.println(WiFi.localIP()); //} void setup() {
// Set software serial baud to 115200; Serial.begin(115200); // connecting to a WiFi network WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) {
delay(500); Serial.println("Connecting to WiFi..."); } //connecting to a mqtt broker client.setServer(mqtt_broker, mqtt_port); //connecting to a mqtt broker while (!client.connected()) {
String client_id = "602iot_"; // client_id += String(WiFi.macAddress()); Serial.println("Connecting to public emqx mqtt broker..."); if (client.connect(client_id.c_str(), mqtt_username, mqtt_password)) {
Serial.println("Public emqx mqtt broker connected!"); } else {
Serial.print("failed with state\n"); Serial.print(client.state()); delay(2000); } } } void loop() {
client.loop(); unsigned long currentMillis = millis(); // temperature and humidity data are publish every 20 second if (currentMillis - previousMillis >= 20000) {
previousMillis = currentMillis; DHT.read(DHT11_PIN);//DHT11读取环境的温湿度数据 float temp = DHT.temperature; float hum = DHT.humidity; // json serialize DynamicJsonDocument data(256); data["temp"] = temp; data["hum"] = hum; // publish temperature and humidity char json_string[256]; serializeJson(data, json_string); // {"temp":23.5,"hum":55} Serial.println(json_string); client.publish(topic, json_string, false); client.subscribe(topic); } }
数据库的连接和测试测试/调试及实验结果分析1、连接WIFI并初始化连接MQTT服务器![在这里插入图片描述](https://img-blog.csdnimg.cn/20210420221713189.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1dYTGVhZGVy,size_16,color_FFFFFF,t_70)2、MQTT服务器收到消息后,会检测是否符合规则,如果消息命中规则,则将数据根据字段切割,并且存进数据库。![在这里插入图片描述](https://img-blog.csdnimg.cn/20210420221729111.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1dYTGVhZGVy,size_16,color_FFFFFF,t_70)EMQ X CLOUND温湿度指标状态图 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2021042022182999.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1dYTGVhZGVy,size_16,color_FFFFFF,t_70)已成功使 ESP8266 连接到 EMQ X Cloud 提供的公共 MQTT 服务器。 在本项目中我们简单的将 ESP8266 连接到 MQTT 服务器,这只是 ESP8266 较为基础的能力之一,ESP8266 其实还能与各类物联网传感器相连,并将传感器数据上报至 MQTT 服务器。

转载地址:https://blog.csdn.net/WXLeader/article/details/115920719 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:基于arduino uno &掌控板实现数据上传到阿里云平台
下一篇:Mind+掌控板实现的项目案例

发表评论

最新留言

很好
[***.229.124.182]2024年04月19日 06时48分20秒