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
常理来讲测试完毕之后需要禁止别的电脑远程直接来访问数据库
可以把测试账号设置为本机访问