11-物联网开发终端管理篇-java从MQTT获取设备数据,并通过Druid连接池把数据写入MySQL数据库(Windows系统)

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

说明

这一节是使用java连接MQTT服务器,然后订阅主题获取所有设备数据,

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

注: java连接MQTT和Android连接MQTT是一样的.

java使用Druid连接池连接数据库可参考提供的MySQL基础开源教程.

java代码使用IntelliJ IDEA软件打开.

 

 

新建数据库和表格

1,新建数据库

 

 

 

 

 

2,数据库名字 historical_data,编码格式 utf8

 

 

3,在historical_data数据库里新建表格

 

 

 

4,添加几个字段

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

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

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

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

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

 

 

 

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

 

 

 

可以打开表看下,现在是没有数据

 

 

 

 

 

创建一个测试用户

1,说明

咱现在的数据库只能使用root账号在本机进行访问,

咱新建一个用户,让其可以在其它电脑上访问咱这个数据库

 

 

 

2,点击用户, 点击新建用户

 

 

 

 

 

3,用户名密码随意,主机那里填写 % (代表所有IP地址皆可访问)

 

 

 

 

 

4,点击权限, 点击添加权限

 

 

 

只选择historical_data这个数据库, 然后后面只选择上增删改查,刷新就可以了

注意哈,为了数据库的安全,一般数据库不能对外开放,咱测试的时候可以这样子.

 

 

 

 

 

 然后点击保存

 

 

 

 

 

5,在别的电脑上访问试一试

 

 

 

 

 

 

 

 

 

 

进来了

 

 

 

 

测试

1,使用IntelliJ IDEA 打开这节的工程

 

 

 

 

 

2,源码需要使用JDK1.8及其以上版本

如果版本小于1.8则需要安装(只需要安装,不需要配置环境变量)

 

 

 

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

 

 

 

 

 

2,修改为自己的数据库信息和MQTT服务器信息

 

 

3,根据自己的设备数据修改解析格式

如果设备的数据格式和我的不一样,用户根据自己的数据格式修改

我的设备上报数据的格式是 {"data":"sensor","type":"th","temperature":45,"humidity":23}

 

 

 

 

4,启动

 

 

 

 

5,可以在控制台看到监控的所有设备的数据

 

 

 

6,打开数据库表格

 

 

 

 

生成可执行jar包, 并安装运行到服务器

1,停止运行

 

 

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

 

 

 

 

3,补充一下实际生成jar包的流程(用户不需要操作)

 

 

 

 

 

 

 

4,生成的jar包的位置

 

 

 

5,如果服务器没有安装JDK,请用户先安装JDK

如果已经安装了别的JDK版本,这个版本的可以只安装,不配置环境变量,

后面有说明怎么指定JDK运行. 记得往后看哈!

 

https://www.cnblogs.com/yangfengwu/p/10359132.html

 

 

 

6,把先前生成的jar包拷贝到服务器

 

 

7,打开命令窗口 cmd

 

 

8,进入到jar包目录

 

 

9,执行 java -jar MqttDataToMySQL.jar

 

 

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

 

 

 

让程序在后台运行

1,关闭

 

 

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

 

 

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

编辑里面的内容如下(MqttDataToMySQL.jar 就是jar包的名字)

@echo off
start javaw -jar MqttDataToMySQL.jar
exit

 

 

4,双击运行即可

 

 

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

 

 

 

 

6,也可以指定JDK路径运行

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

 

@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.获取MQTT数据,从连接池获取链接对象,把数据写到数据库

 

 

注意事项1

1,正常情况下java软件也是放到服务器上的, 所以MQTT连接地址应该写为

tcp://localhost:1883

 

 

2,使用 localhost 连接MQTT服务器, 获取MQTT设备的所有数据可以直接订阅 #

 

 

3,同样的数据库连接地址也改为localhost , 数据库用户名和密码应该改为 root 的

 

 

修改完成以后,重新生成jar包,然后放到服务器上即可

 

注意事项2

常理来讲测试完毕之后需要禁止别的电脑远程直接来访问数据库

可以把测试账号设置为本机访问

 

posted on 2022-07-30 23:58  广源时代  阅读(969)  评论(0编辑  收藏  举报

导航

支付宝 QQ群