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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月19日 06时48分20秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
C/C++算法笔记配套练习题-循环
2019-04-29
解决:macOS下logisim左侧侧边栏被隐藏
2019-04-29
(2021-5)搜索类题目(bfs dfs)-计算水洼数量 c++
2019-04-29
常用IDEA快捷键
2019-04-29
unity 导出pc端后读取xml报错
2019-04-29
unity 根据给定的点绘制多边形
2019-04-29
C# 判断点是否在多边形内
2019-04-29
Unity 运动中的目标跟随实现
2019-04-29
Git 常用命令
2019-04-29
独立游戏开发(一)-- 安装Unity
2019-04-29
独立游戏开发(二)-- 如何安装Unity插件
2019-04-29
独立游戏开发(三)-- 安装编辑器及控制摇杆
2019-04-29
独立游戏开发(四)-- 安装python环境及配置打表工具
2019-04-29
独立游戏开发(五)-- 控制角色在范围内移动
2019-04-29
独立游戏开发(六)-- 对象池及模块加载
2019-04-29
独立游戏开发(七)-- 随机游走病毒及追踪角色病毒实现
2019-04-29
独立游戏开发(八)-- 繁殖病毒实现
2019-04-29
独立游戏开发(九)-- 盾道具的生成及触发实现
2019-04-29
独立游戏开发(索引)
2019-04-29
独立游戏开发(十)-- 光罩特效以及对病毒产生的路径影响
2019-04-29