(esp32+MQTT+云服务器+MySQL)实现物联网温湿度数据采集到云端数据库MySQL

article/2025/8/24 18:20:42

前言
之前物联网硬件采集数据一直都是通过阿里云实现数据的可视化,没有将硬件采集到的数据存入云数据库,没有进一步利用数据进行操作。
本文一共有五个步骤:
1.esp32通过arduino平台和硬件DHT11温湿度模块采集数据
2.创建EMQ X Cloud MQTT云服务器或者本地部署EMQ X企业版MQTT服务器(这里展示云与服务器)
3.云服务器通过宝塔创建MySQL数据库或本地虚拟机内宝塔MySQL数据库(这里展示云MySQ)
4.利用MQTT将硬件采集到的数据送入云服务器MySQL存储
5.效果展示

在这里插入图片描述

1.esp32通过arduino平台和硬件DHT11温湿度模块采集数据

1.1硬件设备在这里插入图片描述

乐鑫esp32
在这里插入图片描述

DHT11温湿度模块
在这里插入图片描述
1.2、软件准备
1.2.1、Arduino IDE
a)官方下载地址: http://arduino.cc/en/Main/Software
b)Arduino IDE老版本下载链接:https://www.arduino.cc/en/Main/OldSoftwareReleases#previous
在这里插入图片描述
1.2.2、库文件*esp32开发板下载
打开arduino udo-文件-首选项-附加开发板管理器网址,添加https://dl.espressif.com/dl/package_esp32_index.json
再点工具-开发版-开发版管理器,搜索esp32并下载。
1.2.3、库文件
链接:http://note.youdao.com/noteshare?id=28fa267e0187a5e7502079098b27a9fe&sub=21E9C4DB0C0846018189EA1E27F9D72D

1.2.4、硬件连线

ESP32   --------------------- DHT11
P15  --------------------- DATA
3.5V    --------------------- VCC
GND     --------------------- GND

注:搭建好mqtt服务器在运行代码
1.2.5、示例代码


```c
#include <WiFi.h>
#include <PubSubClient.h>
#include <DFRobot_DHT11.h>
#include <ArduinoJson.h>
DFRobot_DHT11 DHT;
#define DHT11_PIN 15
#include <string.h>
const char* ssid = ""; //wifi账号
const char* password =  ";  //wifi密码
const char* mqttServer = "";  //mqtt服务器
const int mqttPort = ;//端口
const char* mqttUser = ""; //mqtt账号
const char* mqttPassword = ""; //mqtt密码String Temp="temp";String Hum="hum";char str[60];char str1[20];char str2[20];
WiFiClient espClient;
PubSubClient client(espClient);void setup() {Serial.begin(115200);WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.println("Connecting to WiFi..");}Serial.println("Connected to the WiFi network");client.setServer(mqttServer, mqttPort);while (!client.connected()) {Serial.println("Connecting to MQTT...");if (client.connect(topic, mqttUser, mqttPassword )) {Serial.println("connected");} else {Serial.print("failed with state ");Serial.print(client.state());delay(2000);}}client.publish(topic, "Hello from ESP32"); //填写主题}void loop() {DHT.read(DHT11_PIN);String temp= String(DHT.temperature);String humidity1 = String(DHT.humidity);sprintf(str,"{\"temp\":%s,\"hum\":%s}",temp,humidity1);Serial.println(str);client.publish(topic,str); //填写主题delay(10000);client.loop();
}

1.3串口打印信息
在这里插入图片描述

2.创建EMQX Cloud MQTT服务器

方案一

2.1、在云服务上安装EMQX Cloud(开始180天试用云服务器板)
在这里插入图片描述

进行注册后
在这里插入图片描述
2.2、下载MQTTX软件测试EMQ X Cloud MQTT服务器的搭建情况
测试软件在这里下载https://mqttx.app/cn/

在这里插入图片描述
新建一个连接
名称随便
服务器地址和端口填写 EMQ X Cloud概览里面的连接地址和连接端口(端口选择mqtt的端口)
在这里插入图片描述
用户名和密码在 EMQ X Cloud 认证鉴权-认证里面添加
在这里插入图片描述

连接上之后可以向指定的Topic发送消息,也可以订阅Topic,同时在控制台也可以看到连接上了的客户端
在这里插入图片描述

EMQ X Cloud 监控里面已经有显示已连接
在这里插入图片描述

3.云服务器通过宝塔创建MySQL数据库并连接到本地

这部分需要在我们的云服务器上安装一个数据库,我在这里选择的是MySQL,还需要安装PHP、Nginx。大家可以自行在服务器上安装,这里展示华为云安装宝塔后的情况

在这里插入图片描述
1.第一次打开面板会自动提示安装LNMP套件,选择一键安装即可,安装完成之后点击数据库,在安全开放3306端口,选择新建数据库,要记住用户名和密码,等下我们本地连接数据库的时候要用到,访问权限建议选择所有IP。
2.在MySQL服务器创建温湿度标,在宝塔面板数据库内点击管理,
在这里插入图片描述
3.复制代码

CREATE TABLE `temp_hum` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT,`up_timestamp` timestamp NULL DEFAULT NULL,`client_id` varchar(32) DEFAULT NULL,`temp` float unsigned DEFAULT NULL,`hum` float unsigned DEFAULT NULL,PRIMARY KEY (`id`),KEY `up_timestamp_client_id` (`up_timestamp`,`client_id`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8mb4;

到这里,点击执行,一个温湿度表即创建成功。
在这里插入图片描述

在这里插入图片描述
数据库建立好后可以在本地用Navicat 15 for MySQL连接数据库,方便数据后续操作。这里不展开,只是展示下连接步骤
1.连接名随便
2.主机填写MySQL所在云服务器的地址
3.用户名和密码填写MySQL的用户名和密码
4.测试连接,连接成功即可
5.开启连接后可以看到在云服务器宝塔里面的数据库同步过来
在这里插入图片描述

4.利用MQTT将硬件采集到的数据送入云服务器MySQL存储

在这里我们需要将服务器收到的JSON格式数据根据字段分割开来,并且将相应的字段存进数据库,实现数据的永久化,这一步可以使用MQTT服务器的规则引擎模块。
在这里插入图片描述

在EMQ X规则引擎-规则 新建规则内输入下面代码,新建规则,这里的规则就是用来根据字段切割消息。

SELECT 
timestamp as up_timestamp, 
clientid as client_id,
payload.temp as temp,
payload.hum as hum  
FROM  "temp_hum/emqx"  

在这里插入图片描述
填写规则后,我们可以使用SQL测试,看看规则能否使用,确保数据能够上传。

在这里插入图片描述

测试完成后添加响应动作
在这里插入图片描述
在这里插入图片描述
数据选保存到MySQL
使用资源选择新建
在这里插入图片描述
MySQL填写云服务器宝塔里面的IP地址:3306
MySQL数据库名和用户名、密码填写云服务器宝塔里面的MySQL。

SQL模块填写

insert into 
temp_hum(up_timestamp, client_id, temp, hum) values 
(FROM_UNIXTIME(${up_timestamp}/1000), ${client_id}, ${temp}, ${hum}) 

在这里插入图片描述
确认后创建即可。这样到现在我们就实现了 硬件-EMQ XMQTT服务器 -云服务器MySQL数据库 -本地Navicat 15 for MySQL。

5.效果展示

开机连接wifi和mqtt,过段时间打印温湿度数据
在这里插入图片描述

MQTT服务器收到消息后,会检测是否符合规则,如果消息命中规则,则将数据根据字段切割,并且存进数据库。
云服务器数据情况
在这里插入图片描述
本地数据库情况
在这里插入图片描述

注:这里只是展示云服务器部署,其实本地部署和云服务器部署差别不大


http://chatgpt.dhexx.cn/article/XLa2ep28.shtml

相关文章

mysql 数据库迁移到云数据库,从本地MySQL迁移到云数据库为什么是Amazon Aurora?mysql云端数据库...

近两年&#xff0c;随灭云情况的成熟&#xff0c;良多企业的营业都正在向云端迁徙。于是&#xff0c;“云数据库”成为最时髦词汇之一&#xff0c;被AWS、微软、阿里、华为等大厂推崇。那么&#xff0c;对于用户来说&#xff0c;他们若何对待云数据库的成长示状&#xff0c;到底…

使用EMQX搭建的MQTT服务器 如何转发数据并保存到云端数据库?

记录一下自己解决这个问题的方法! 一、技术原理 新建一个转发指定数据的资源接口,然后在规则引擎中设置过滤主题消息的规则,筛选出你所需要主题的消息,设置转发的http接口(URL),http请求选择POST或GET请求,要求是在编写servlet接口时与doPost()、doGet()方法对应。se…

从硬件采集到云端数据库全实现之物联网体温检测系统(ESP32+MQTT+云服务器+MySQL )

前言 学了这么久的物联网&#xff0c;一直停留在硬件层面的数据采集和显示&#xff0c;虽然也用过Ubuntu系统进行过项目开发&#xff08;年初的时候用树莓派完成了口罩识别的项目&#xff09;&#xff0c;也使用过云服务器与硬件简单的MQTT通讯&#xff0c;但是一直没有把两者…

微信小程序云开发:基本介绍及云端数据库的使用

基本介绍 开发者可以使用云开发快速开发小程序、小游戏、公众号网页等&#xff0c;并且原生打通微信开放能力。 发布小程序需要使用云开发。 开发者无需搭建服务器&#xff0c;可免鉴权直接使用平台提供的 API 进行业务开发。 配有云端数据库&#xff0c;与传统数据库相比操…

20210117noteexpress云端数据库经验分享

同步到云端数据库 蒙蔽了&#xff0c;居然要占老子C盘空间 这个 简直银魂不散吧&#xff0c;都删了又要来 貌似把这个附件文件夹从C盘改到其他盘就OK 了 C:\Users\16442\AppData\Roaming\NoteExpress\OnlineDBs 一占用就是几个G的文件夹&#xff0c;草 测试成功&#xff…

阿里云国际版建立云端数据库操作流程

手把手教学如何使用阿里云架设与托管网站系列&#xff0c;今天87loud继续编辑创建云数据库的操作教程&#xff1a; 自建关联式数据库的瓶颈 关联式数据库&#xff08;Relational Database&#xff09;&#xff0c;几乎在所有应用中都可以见到的数据库应用&#xff0c;但是在套…

云端创建MySQL数据库

一、创建RDS MySQL实例 二、设置白名单 创建RDS实例后&#xff0c;需要设置RDS实例的白名单&#xff0c;以允许外部设备访问该RDS实例。 三、创建RDS数据库账号 登录RDS管理控制台&#xff0c;在左侧单击实例列表&#xff0c;然后在上方选择实例所在地域。 找到目标实例&am…

云端数据库配置

进入阿里云官网&#xff0c;购买云数据库 从控制台进入云数据库&#xff0c;选择自己购买的地区&#xff08;示例中是杭州&#xff09;&#xff0c;可以看到已经在运行中 点击自己的实例ID进入RDS管理控制台创建账户 创建完成后可以看到自己的账号 接着创建自己的数据库 如图&a…

【记搭建云端数据库过程】

学习之云端数据库配置 这次的学习内容是跟B站的戴师兄学的&#xff0c;所以用到的资源可以到戴师兄的视频下面进行下载。 写这个的目的主要是记学习的过程。 下面就让我们看看怎么配置云端数据库吧 第一步&#xff1a;到阿里云购买云端数据库 在产品里找到数据库 然后找到…

云数据库

1. 云数据库概述 1.1. 云计算是云数据库兴起的基础 1.2. 云数据库概念 云数据库是部署和虚拟化在云计算环境中的数据库。云数据库是在云计算的大背景下发展起来的一种新兴的共享基础架构的方法&#xff0c;它极大地增强了数据库的存储能力&#xff0c;消除了人员、硬件、软件…

云数据库浅析

云数据库定义 1.部署和虚拟化在云计算环境当中的数据库&#xff0c;以网络提供IT资源服务。 2.云数据库没有一种自己的数据模型&#xff0c;只是将已有的数据模型&#xff08;关系型数据库、nosql&#xff09;在云端的实现。 特点&#xff08;分布式统一管理带来的优势&#x…

华为BGP协议基础配置

目录 一、原理概述 二、实验目的 三、实验拓扑 四、实验步骤 五、查看代码&#xff1a; 一、原理概述 1、自治系统&#xff08;AS&#xff09;是由一个技术管理机构管理&#xff0c;使用统一选路策略的一组路由器集合,自治系统编号范围&#xff1a;1-65535&#xff0c;其…

BGP路由协议(1)

什么是BGP BGP是外部路由协议&#xff0c;是一种增强的距离矢量路由协议。 BGP作用 用来在AS之间传递路由信息。 什么是系统&#xff08;AS&#xff09; AS是由同一个技术管理机构管理、使用统一选路策略的一些路由器的集合。 BGP特征 可靠的路由更新机制丰富的Metric度量方…

BGP协议原理(一)BGP协议基本概念:BGP作用与特点、BGP邻居关系建立与配置

文章目录 前提概念ASASN IGP与EGP BGP的基本概述基本作用 BGP协议特点BGP邻居关系和配置建立TCP连接BGP邻居类型BGP简单邻居关系配置报文类型邻居关系的建立 前提概念 AS AS&#xff08;Autonomous System&#xff09;&#xff1a;自治系统/路由选择域 AS是指由同一技术机构管…

【网络协议详解】——BGP协议(学习笔记)

目录 &#x1f552; 1. 概述&#x1f552; 2. BGP 发言人&#x1f552; 3. 工作原理&#x1f552; 4. 报文格式&#x1f558; 4.1 报文首部&#x1f558; 4.2 打开报文&#x1f558; 4.3 更新报文&#x1f558; 4.4 保活报文&#x1f558; 4.5 通知报文 &#x1f552; 5. BGP 的…

BGP协议:简介、属性、选路原则

BGP协议&#xff1a;简介、属性、选路原则 目录 BGP协议&#xff1a;简介、属性、选路原则 一、学习网络BGP必备基础知识 二、BGP 工作原理 三、BGP报文 四、BGP邻居关系的配置 五、BGP需要注意的事项 六、BGP的属性分类 及列举讲解 一、学习网络BGP必备基础知识 边界…

BGP路由协议的那些事?(上)

BGP是怎么来的&#xff1f;为什么要使用BGP&#xff1f; 路由协议的分类 分类包含协议说明IGP&#xff1a;用于域&#xff08;AS&#xff09;内路由选择。RIP距离矢量协议&#xff0c;多用于小型网络。ISIS链路状态协议&#xff0c;多用于运营商网络。OSPF链路状态协议&#…

BGP协议解析(白话版)

之前一直没搞明白BGP有啥用&#xff0c;加了跟没加没啥区别&#xff0c;专门查资料写了这篇《BGP协议解析》。 下面使用eNSP模拟器演示&#xff01; IBGP与EBGP的区别 BGP分为两种&#xff1a;IBGP与EBGP。 两个路由器的BGP号相同&#xff0c;建立邻居关系叫IBGP&#xff0…

华为 BGP协议基础配置与总结

良药苦口利于病&#xff0c;忠言逆耳利于行。 文章目录 一、BGP概述二、拓扑三、基础配置四、BGP与IGP比较五、BGP的数据包六、BGP的邻居状态机七、BGP计时器八、BGP的更新源九、BGP的路由生成十、BGP的路由通告 BGP的邻居建立很关键&#xff0c;涉及环回口地址建立bgp邻居就需…

计算机网络——BGP协议

BGP协议 和谁交换&#xff1a;与其他AS的邻站BGP发言人交换信息。 交换什么&#xff1a;交换网络可达性信息 多久交换一次&#xff1a;发生变化时更新有变化的部分 一般来说两个网络都是由一个BGP发言人连接的。 BGP协议交换信息的过程 BGP协议所交换的网络可达性的信息就…