前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >02-STM32+ESP8266+AIR202/302终端管理篇-把设备温湿度数据存储到MySQL数据库(Windows)

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

作者头像
杨奉武
发布2020-12-07 10:36:08
9271
发布2020-12-07 10:36:08
举报
文章被收录于专栏:知识分享

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K\_C/" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

前言

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

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

说明

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

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

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

配置数据库

1.新建一个数据库

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

3.新建表格

4.添加几个字段

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

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

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

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

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

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

打开源码

1.使用IntelliJ IDEA 打开

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

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

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

测试

1.修改自己的数据库和MQTT服务器的信息

3.关于该程序订阅的主题

提供的教程里面设备发布的主题为: device/XXXXXX

如果是WiFi设备,XXXXXX是WiFi的MAC地址, 如果是GSM设备,XXXXXX是GSM设备的IMEI

为了得到所有设备的数据,所以订阅的主题为: device/#

4.关于该程序解析消息并存到数据库

设备发布的消息:{"data":"TH","bit":1,"temperature":14,"humidity":45}

在MQTT接收的消息回调里面,获取解析温湿度消息,然后把数据插入到数据库.

5.运行程序

6.可以在控制台输出栏看到监控的所有设备的数据

7.重新打开数据库表格

生成可执行jar包

1.关闭软件

2.注意:因为程序已经设置过生成jar包,所以用户直接按照下面图示操作即可生成可执行jar包.

3.补充一下正常生成jar包的实际流程

4.生成的JAR包的位置

部署到服务器运行

1.如果服务器没有安装JDK,请用户安装JDK

https://cloud.tencent.com/developer/article/1397720

2.把先前生成的jar包拷贝到服务器

2.打开命令窗口

3.进入到jar包所在目录

4.执行 java -jar MqttDataToMySQL.jar

5.打印所有设备的数据,说明已经运行起来了

让程序在后台执行

1.关闭控制台或者Ctrl+C退出程序

2.注意呀!不要犯常识性错误!把文件扩展名选中!

3.在jar包目录新建一个后缀名字为.bat的文件

编辑里面的内容如下 :

MqttDataToMySQL.jar 就是jar包的名字

代码语言:javascript
复制
@echo off
start javaw -jar MqttDataToMySQL.jar
exit

4.双击运行即可

5.如果要关闭,找到任务管理器java运行进程,关闭即可

6.也可以指定JDK运行

C:\java8\jdk1.8.0.131 为JDK的安装路径

代码语言:javascript
复制
@echo off
set JAVA_HOME=C:\java8\jdk1.8.0.131
set CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOMe%\lib\tools.jar;
set Path=%JAVA_HOME%\bin;
start javaw -jar MqttDataToMySQL.jar
exit

源码说明

1.整个源码就两部分,MQTT和数据库

MQTT使用的是paho.client.mattv3-1.2.0的jar包

数据库除了基本的jabc连接器以外,使用了阿里巴巴的开源链接池 druid

2.主函数就两部分,初始化连接池和连接MQTT

3.连接池部分

4.连接MQTT部分,订阅主题

5.从连接池获取链接对象,把数据写到数据库

补充

1.关于device/#

一般咱接收所有设备的数据不用 device/#

而且这样所有人都可以监控所有设备数据,这是不可取的!!

我之所以把所有设备发布的主题设置为 device/XXXXXX 是为了好测试

一般只设置一级主题就可以了不要加 /XXXXXX

咱在服务器上可以直接订阅 # 就可以获取所有设备的数据

注意:只有在服务器上才可以

可以在服务器上用调试助手测试下

用户可以修改程序把链接的地址改为 localhost

把订阅的主题改为 #

重新编译下工程

重新生成jar包然后按照上面的步骤放到服务器运行即可

结语

用户可以用以下信息查看数据库里面的设备历史数据

IP地址: mnif.cn

端口号: 3306

用户名: yang

密码: 11223344. 注意后面有个点

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 说明
  • 配置数据库
  • 打开源码
  • 测试
  • 生成可执行jar包
  • 部署到服务器运行
  • 让程序在后台执行
  • 源码说明
  • 补充
  • 结语
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档