esp8266数据上传到mysql数据库_03-STM32+ESP8266+AIR202/302终端管理篇-把设备温湿度数据存储到MySQL数据库(Windows)...

本文介绍如何将ESP8266收集的温湿度数据通过MQTT协议发送到STM32,再由STM32连接MySQL数据库进行存储。内容包括数据库配置、Java代码实现、jar包生成及服务器部署。
摘要由CSDN通过智能技术生成

前言

这一节把设备通过MQTT上报的数据写入MySQL数据库.

注:关于MySQL数据库的安装和基本使用请用户参考基础开源教程学习!

说明

此节代码使用的 IntelliJ IDEA 软件编写.

整个程序是使用java连接MQTT,通过通配符订阅所有设备的数据.

然后通过Druid连接池把数据写入MySQL数据库.

配置数据库

1.新建一个数据库

2a1bf7b4b03f31aa4114fb148f750320.png

2.数据库名字为historical_data ;编码方式为 utf8

b75b26a4b796dd3388d0e4c6233c2b4e.png

3.新建表格

30c05d5835dfb1e6c6c4638a680f5b12.png

4.添加几个字段

字段id类型是int, 去掉允许空值, 设置为自增,然后设置为主键;

字段data_time类型设置为timestamp;(作为数据存储的时间)

字段client_id类型设置为varchar;(记录设备的id)

字段temperature类型设置为float;(存温度数据)

字段humidity类型设置为float;(存湿度数据)

6aab1d20f7f97be18ec0d914151f5b2c.png

5.点击保存 表格名字为 humiture_table

26de760329db53e6b0361840f947e789.png

6ca16535ed75b3e425503e59a1092cf2.png

打开源码

1.使用IntelliJ IDEA 打开

1c47abe17f412096344a9e3e58b66fa9.png

2.源码需要使用JDK1.8版本

083c584ec30c679c768bb5edbadb6b82.png

如果用户先前安装的1.7版本,需要安装JDK1.8版本

安装完以后不需要配置环境变量,只需要在软件中设置JDK路径

00fbbf94f5b5f6e36610c9109dfb9ff8.png

要将esp8266采集到的温湿度数据传到MySQL数据库中,可以按照以下步骤进行: 1. 连接esp8266和传感器:使用esp8266连接温湿度传感器,采集数据。 2. 连接WiFi网络:使用esp8266连接WiFi网络,确保可以访问互联网。 3. 连接MySQL数据库:在互联网上创建一个MySQL数据库,并使用esp8266连接到该数据库。 4. 创建数据表:在MySQL数据库中创建一个数据表,用于存储温湿度数据。 5. 编写代码:使用Arduino IDE编写代码,实现esp8266采集温湿度数据并上传到MySQL数据库中。 下面是一个简单的示例代码: ```c++ #include <ESP8266WiFi.h> #include <MySQL_Connection.h> #include <MySQL_Cursor.h> #include <DHT.h> #define DHTPIN D4 // 温湿度传感器连接的引脚 #define DHTTYPE DHT11 // 温湿度传感器类型 #define WIFI_SSID "your_ssid" // WiFi网络名称 #define WIFI_PASSWORD "your_password" // WiFi网络密码 #define MYSQL_HOST "your_mysql_host" // MySQL数据库主机地址 #define MYSQL_PORT 3306 // MySQL数据库端口号 #define MYSQL_USER "your_mysql_user" // MySQL数据库用户名 #define MYSQL_PASSWORD "your_mysql_password" // MySQL数据库密码 #define MYSQL_DATABASE "your_mysql_database" // MySQL数据库名称 DHT dht(DHTPIN, DHTTYPE); WiFiClient client; MySQL_Connection conn((Client *)&client); void setup() { Serial.begin(9600); delay(100); // 连接WiFi网络 WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } // 连接MySQL数据库 Serial.println("Connecting to MySQL database..."); if (conn.connect(MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASSWORD)) { Serial.println("Connected to MySQL database!"); } else { Serial.println("Failed to connect to MySQL database."); while (1); } // 创建数据表 Serial.println("Creating table..."); MySQL_Cursor *cursor = new MySQL_Cursor(&conn); cursor->execute("CREATE TABLE IF NOT EXISTS temperature_humidity (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, temperature FLOAT, humidity FLOAT)"); delete cursor; // 初始化温湿度传感器 dht.begin(); } void loop() { // 采集温湿度数据 float temperature = dht.readTemperature(); float humidity = dht.readHumidity(); // 将数据传到MySQL数据库中 if (conn.connected()) { Serial.println("Inserting data into MySQL database..."); char query[128]; sprintf(query, "INSERT INTO temperature_humidity (temperature, humidity) VALUES (%f, %f)", temperature, humidity); MySQL_Cursor *cursor = new MySQL_Cursor(&conn); cursor->execute(query); delete cursor; Serial.println("Data inserted into MySQL database!"); } else { Serial.println("Failed to insert data into MySQL database."); } delay(10000); // 每10秒钟采集一次数据 } ``` 在这个示例中,我们使用了ESP8266WiFi、MySQL_Connection和MySQL_Cursor库来连接WiFi网络和MySQL数据库,并且使用DHT库来读取温湿度传感器的数据。在setup()函数中,我们连接WiFi网络和MySQL数据库,并创建一个名为“temperature_humidity”的数据表。在loop()函数中,我们采集温湿度数据,并将其插入到MySQL数据库中。 请确保在使用该示例代码前,已经将所有的配置信息(如WiFi网络名称、密码、MySQL数据库主机地址、用户名、密码和数据库名称)替换为自己的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值