ESP32+MQTT+MySQL实现发布订阅【气味数据收集】

这篇具有很好参考价值的文章主要介绍了ESP32+MQTT+MySQL实现发布订阅【气味数据收集】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ESP32+MQTT+MySQL实现发布订阅【气味数据收集】


ESP32+MQTT+MySQL实现发布订阅【气味数据收集】,嵌入式开发,mysql,数据库,单片机,stm32,物联网

🔮🔮🔮🔮🔮相关文章🔮🔮🔮🔮🔮
ESP32连接MQ Sensor实现气味反应
🔗 https://blog.csdn.net/ws15168689087/article/details/131365573
ESP32连接云服务器【WebSocket】
🔗 https://blog.csdn.net/ws15168689087/article/details/131406163
个人云服务器搭建MQTT服务器
🔗 https://blog.csdn.net/ws15168689087/article/details/131571433
ESP32开发板引脚介绍【附有引脚使用实例】
🔗 https://blog.csdn.net/ws15168689087/article/details/131654327


👨‍🏫内容1:前言


👨‍🏫 前言
👉有关ESP32实现气味反应以及搭建MQTT服务器的相关内容
👨‍💻可以参考往期博文
👋本章将实现ESP32将收集到的气味数据借助MQTT传输保存到MySQL数据库中

🌸🌸🌸🌷🌷🌷💐💐💐🌷🌷🌷🌸🌸🌸

👨‍⚖️内容2:ESP32数据采集和发布


1️⃣气味数据采集:
👉这里我将简单展示气味采集的内容,具体详情可翻阅往期博文
ESP32+MQTT+MySQL实现发布订阅【气味数据收集】,嵌入式开发,mysql,数据库,单片机,stm32,物联网

int mq_pin = 33;

void setup() {
 // put your setup code here, to run once:
 Serial.begin(9600);   //9600 bps
 //Serial.println("CLEARDATA");
 //Serial.println("LABEL,VALUE");
}

void loop() {
 // put your main code here, to run repeatedly:
 int val;
 val=analogRead(33);
 //Serial.println(val ,DEC);
 //Serial.print("DATA, TIMER,");
 Serial.println(val);
 delay(500);
}

2️⃣数据采集和发布:
🎈这里我们将采集到的数据发布到MQTT服务器上
⬇️下面的代码中有部分需要自行修改填写⬇️

#include <WiFi.h>
#include <WiFiClient.h>
#include <PubSubClient.h>
#include <Ticker.h>    


// 设置wifi接入信息(请根据您的WiFi信息进行修改)
const char* ssid = "xxxxxx";     //WIFI名称
const char* password = "xxxxxxx";   //WIFI密码
const char* mqttServer = "xxxxxxxx";    //MQTT服务器IP


Ticker ticker;   //定时执行任务
WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);

int count;    // Ticker计数用变量
int mq_pin = 33;   //引脚号

void setup() {
 Serial.begin(9600);

 //设置ESP32工作模式为无线终端模式
 WiFi.mode(WIFI_STA);
 
 // 连接WiFi
 connectWifi();
 
 // 设置MQTT服务器和端口号
 mqttClient.setServer(mqttServer, 1883);

 // 连接MQTT服务器
 connectMQTTServer();

 // Ticker定时对象
 ticker.attach(1, tickerCount); 
}

void loop() { 


 // delay(500);

 if (mqttClient.connected()) { // 如果开发板成功连接服务器
   // 每隔1秒钟发布一次信息
   if (count >= 2){
     pubMQTTmsg();
     count = 0;
   }    
   // 保持心跳
   mqttClient.loop();
 } else {                  // 如果开发板未能成功连接服务器
   connectMQTTServer();    // 则尝试连接服务器
 }
}

void tickerCount(){
 count++;
}

void connectMQTTServer(){
 String clientId = "slldxdb";

 // 连接MQTT服务器
 if (mqttClient.connect(clientId.c_str())) { 
   Serial.println("MQTT Server Connected.");
   Serial.println("Server Address: ");
   Serial.println(mqttServer);
   Serial.println("ClientId:");
   Serial.println(clientId);
 } else {
   Serial.print("MQTT Server Connect Failed. Client State:");
   Serial.println(mqttClient.state());   //打印连接返回码
   delay(3000);
 }   
}

// 发布信息
void pubMQTTmsg(){
 static int value; // 客户端发布信息用数字

 String topicString = "mqtt-mark";   //建立发布主题
 char publishTopic[topicString.length() + 1];  
 strcpy(publishTopic, topicString.c_str());


 int val;
 val=analogRead(mq_pin);

 // 建立发布信息
 String messageString = String(val);
 char publishMsg[messageString.length() + 1];   
 strcpy(publishMsg, messageString.c_str());

 
 // 实现ESP32向主题发布信息
 if(mqttClient.publish(publishTopic, publishMsg)){
   Serial.println("Publish Topic:");Serial.println(publishTopic);
   Serial.println("Publish message:");Serial.println(publishMsg);    
 } else {
   Serial.println("Message Publish Failed."); 
 }
}

// ESP32连接wifi
void connectWifi(){

 WiFi.begin(ssid, password);

 //等待WiFi连接,成功连接后输出成功信息
 while (WiFi.status() != WL_CONNECTED) {
   delay(500);
   Serial.print(".");
 }
 Serial.println("");
 Serial.println("WiFi Connected!");  
 Serial.println(""); 
}

3️⃣实现效果图:
实现效果图如下⬇️
ESP32+MQTT+MySQL实现发布订阅【气味数据收集】,嵌入式开发,mysql,数据库,单片机,stm32,物联网


👨‍💻内容3:MQTT订阅和数据存储


🎯相关代码:
⬇️下面的代码中有部分需要自行修改填写⬇️

import json

import paho.mqtt.client as mqtt
import pymysql

"""rc 值	
0	连接成功
1	协议版本错误
2	无效的客户端标识
3	服务器无法使用
4	错误的用户名或密码
5	未经授权
"""


#打开数据库连接 【自行填写】
mysql_conn = pymysql.connect(user="xxx",password="xxx",host="xxx",database="xxx",port=3306)


def on_connect(client, userdata, flags, rc):
   return rc


def on_message(client, userdata, publishMsg):
   # data = publishMsg.payload
   # print(json.loads(data))
   msg = publishMsg.payload.decode('gb2312')
   print(msg)
   ##存数据到数据库中
   cursor = mysql_conn.cursor()
   insert_sql = 'insert into test (value) VALUES ("%s")' %(msg)
   cursor.execute(insert_sql)
   # 提交到数据库执行
   mysql_conn.commit()
   cursor.close()  # 先关闭游标

def main():
   client = mqtt.Client()
   client.username_pw_set(username='', password='')
   client.on_connect = on_connect
   client.on_message = on_message
   rc = client.connect(host='xxxx', port=1883, keepalive=15)    ##自行填写服务器地址信息
   print('rc', rc)
   if rc == 0:
       client.subscribe('mqtt-mark')    ##订阅主题
   else:
       print('连接失败')
       raise Exception

   # 无限循环收发消息
   client.loop_forever()


if __name__ == '__main__':
   main()
   

🎯效果展示:
⬇️当完全执行后,我们可以看到终端打印收到的数据⬇️
⬇️同时数据库中也依次收到相应的数据【对比图如下】⬇️
ESP32+MQTT+MySQL实现发布订阅【气味数据收集】,嵌入式开发,mysql,数据库,单片机,stm32,物联网

ESP32+MQTT+MySQL实现发布订阅【气味数据收集】,嵌入式开发,mysql,数据库,单片机,stm32,物联网文章来源地址https://www.toymoban.com/news/detail-581139.html

到了这里,关于ESP32+MQTT+MySQL实现发布订阅【气味数据收集】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ESP32连接MQ Sensor实现气味反应

    ESP32+MQTT+MySQL实现发布订阅【气味数据收集】 🔗 https://blog.csdn.net/ws15168689087/article/details/131627595 ESP32连接云服务器【WebSocket】 🔗 https://blog.csdn.net/ws15168689087/article/details/131406163 个人云服务器搭建MQTT服务器 🔗 https://blog.csdn.net/ws15168689087/article/details/131571433 ESP32开发板引脚介绍

    2024年02月16日
    浏览(39)
  • 【Python】Flask + MQTT 实现消息订阅发布

    本次项目主要使用到的库: flask_mqtt 1.创建Flask项目 2创建py文件: mqtt_demo.py 3.代码实现 4.项目运行 运行项目前可在Pycharm中设置 host 和 port 设置好后直接运行项目 使用 MQTTX 进行消息测试 1、测试消息接收 创建连接 Host :为代码中定义好的 broker.emqx.io Port :为代码中定义好的

    2024年02月04日
    浏览(48)
  • RuoYi-Vue前后端分离搭建MQTT服务器实现消息订阅、发布、数据存储 (EMQX Windows10)最全,懒人操作

    1、在RuoYi-Vue项目的superVisualizationSys-common模块下的pom.xml加入jar包依赖 3、在superVisualizationSys-commonsrcmainjavacomsuperVisualizationcommonutils目录下新建mqtt文件夹,添加以下三个文件 注:项目报红的地方可以按Alt+Enter键导包 下载路径: https://www.emqx.io/zh/download   1. 在windows上安装

    2024年02月15日
    浏览(53)
  • MQTT,如何在SpringBoot中使用MQTT实现消息的订阅和发布

    1.1 什么是MQTT? MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。 MQTT最大优点在于用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息

    2024年02月10日
    浏览(38)
  • 【MQTT协议】使用Mosquitto实现mqtt协议(二):编写视频帧的发布/订阅服务

    更多内容详见 【MQTT协议】使用c++实现mqtt协议(Mosquitto源码编译) MQTT协议中的QoS(Quality of Service)表示消息传输的服务质量等级,它是MQTT协议中非常重要的一个概念。 MQTT协议中定义了三个不同等级的QoS: QoS 0:最多一次(At most once)传输。消息发布者只发送一次消息,不

    2023年04月14日
    浏览(43)
  • 一文搞懂MQTT,如何在SpringBoot中使用MQTT实现消息的订阅和发布

    1.1 什么是MQTT? MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。 MQTT最大优点在于用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息

    2024年02月10日
    浏览(44)
  • 一文搞懂MQTT,如何在SpringBoot中使用MQTT实现消息的订阅和发布&MQTT 客户端重连

    简介: 之前介绍了RabbitMQ以及如何在SpringBoot项目中整合使用RabbitMQ,看过的朋友都说写的比较详细,希望再总结一下目前比较流行的MQTT。所以接下来,就来介绍什么MQTT?它在IoT中有着怎样的作用?如何在项目中使用MQTT? 之前介绍了RabbitMQ以及如何在SpringBoot项目中整合使用

    2024年02月05日
    浏览(46)
  • 【MQTT】基于阿里云物联网平台实现两设备间相互订阅及发布消息

    一、准备: 1.下载MQTT.fx - 1.7.1工具 https://www.jianshu.com/p/c9f50cf81cd2 2.进入物联网平台,并按照产品文档创建产品及设备 阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 3.打开两个MQTT.fx工具,并分别填写相关设备信息,连接物联网平台(参考阿里云产品文档)。  二

    2024年02月02日
    浏览(55)
  • MQTT记录(概述,docker部署,基于spring-integration-mqtt实现消息订阅与发布,客户端工具测试)

    需要spring-boot集成spring-integration-mqtt代码的直接跳到第5部分 1.1 MQTT是什么呢? message queue telemetry translation 是一种基于发布与订阅的轻量级消息传输协议.适用于低带宽或网络不稳定的物联网应用.开发者可以使用极少的代码来实现物联网设备之间的消息传输.mqtt协议广泛应用于物

    2024年02月12日
    浏览(47)
  • STM32+ESP-01s+EMQX实现单片机MQTT协议传输数据上云(二)STM32F103与ESP-01s的Usart通信,实现STM32连接上网上云

    单片机:STM32F103c8t6 WiFi模块:ESP8266-01s EMQX:自身服务器上搭载emq服务器或者借用emqx window 版本  USB TO TTL模块:CH340 因为CH340不能给ESP-01s供3.3V的电,所以测试时需要外加供电           本章中涉及到的技术原理主要为ESP01S wfi模块的AT指令通信,我在上一篇文章给大家提到了

    2024年02月16日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包