12-物联网开发终端管理篇-java使用Druid连接池获取MySQL数据库数据,并通过MQTT发送(Windows系统)

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

 

说明

上节是通过 MQTT 接收数据并写到数据库, 这节是 java 使用 Druid 连接池获取 MySQL 数据库数据, 并通过 MQTT 发送

测试

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

 

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

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

 

 

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

 

 

 

 

 

3, 先启动看下效果 (默认连接我的数据库和 MQTT)

 

 

 

 

 

 

4, 打开 MQTT 调试助手

发布的主题:historical/request/863488051205014

订阅的主题:historical/receive/863488051205014

发送的消息:{"data":"humiture","start_time":"2022-07-30 00:00:00","stop_time":"2022-07-30 22:48:00"}

 

 

 

 

 

 

 

{"code":"OK","data":[{"data_time":"2022-07-30 17:07:41","temperature":255.0,"humidity":255.0},
{"data_time":"2022-07-30 22:44:43","temperature":255.0,"humidity":255.0},
{"data_time":"2022-07-30 22:44:46","temperature":255.0,"humidity":255.0},
{"data_time":"2022-07-30 22:44:48","temperature":255.0,"humidity":255.0},
{"data_time":"2022-07-30 22:44:50","temperature":255.0,"humidity":255.0},
{"data_time":"2022-07-30 22:44:52","temperature":255.0,"humidity":255.0},
{"data_time":"2022-07-30 22:44:54","temperature":255.0,"humidity":255.0},
{"data_time":"2022-07-30 22:44:57","temperature":255.0,"humidity":255.0},
{"data_time":"2022-07-30 22:44:59","temperature":255.0,"humidity":255.0},
{"data_time":"2022-07-30 22:45:01","temperature":255.0,"humidity":255.0}],
"client_id":"863488051205014"}

 

5, 返回的数据是提供的测试数据库里面的数据

 

 

 

 

程序说明

1, 连接的数据库和 MQTT 信息

 

 

2,MQTT 订阅主题  historical/request/#

 

 

3, 接收消息格式说明

消息格式:  {"data":"humiture","start_time":"2022-07-30 00:00:00","stop_time":"2022-07-30 22:48:00"}

start_time: 数据的开始时间;  stop_time 数据的结束时间

 

 

 

4, 查询数据

根据 client_id 和 时间段查询数据

String sql = "select data_time, client_id, temperature, humidity from humiture_table where client_id=" + "'"
+client_id+"'"+"and data_time>="+"'"+start_time+"'"+"and data_time<="+"'"+stop_time+"'";

 

 

5, 把从数据库查询到的数据按照 json 格式使用 MQTT 发送给设备

发送的主题: "historical/receive/ 设备的 clientid"

 

 

生成可执行 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 包目录, 并执行 java -jar MySQLDataToMqtt.jar

显示下面的 initDataSource success  subscribe Success 就说明成功执行了

 

 

 

让程序在后台运行

1, 关闭

 

 

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

 

 

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

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

@echo off
start javaw -jar MySQLDataToMqtt.jar
exit

4, 双击运行即可

 

 

5, 再做个关闭的脚本

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

@echo off
for /f "delims=" %%a in ('jps -lv ^| find /i"MySQLDataToMqtt.jar"') do set PID=%%a
taskkill /f /PID %PID%
exit

 

 

 

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 MySQLDataToMqtt.jar

exit

 

注意事项 1

1, 正常情况下 java 软件是放到服务器上运行的

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

MQTT 的地址也改为  tcp://localhost:1883

 

 

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

 

注意事项 2

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

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