前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >11-物联网开发终端管理篇-java从MQTT获取设备数据,并通过Druid连接池把数据写入MySQL数据库(Linux系统,宝塔)

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

作者头像
杨奉武
发布2022-09-19 18:18:57
2.6K2
发布2022-09-19 18:18:57
举报
文章被收录于专栏:知识分享知识分享

说明

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

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

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

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

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

新建数据库和表格

1,新建数据库, 数据库名字 historical_data, 编码格式 utf8

2,正常情况下,用户在服务器上可以点击这个来操作数据库(咱不使用这个,咱使用下面的navicat)

3,在自己的电脑上使用 Navicat 连接数据库

4,新建表格

5,添加几个字段

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

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

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

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

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

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

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

测试

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,一般宝塔都已经安装了java虚拟机,可以随便找个目录点击上面的终端

输入 java -version

6,提示

软件需要1.8版本及其以上的JDK运行, 如果已经安装了别的JDK版本,

可以再安装个1.8版本的,不需要配置环境变量,后面有说明怎么指定JDK运行. 记得往后看哈!

7,把生成的jar包放到服务器上

我放到了opt目录,根据自己的习惯随意

8,点击上面的终端并进入opt目录

9,终端输入 java -jar MqttDataToMySQL.jar 命令启动程序

如果要指定JDK路径运行    /你的JDK文件目录/bin/java -jar MqttDataToMySQL.jar

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

让程序在后台运行

1,在终端里面按下键盘的 Ctrl+C 组合键退出程序

2,输入   nohup java -jar MqttDataToMySQL.jar &

如果要指定JDK路径运行   nohup /你的JDK文件目录/bin/java -jar MqttDataToMySQL.jar &

3,程序已经运行,3073为程序运行的PID值;并生成了日志文件nohup.out

4,把这个控制台关闭

5,点击刷新一下就可以看到日志文件

6.如何关闭程序

先查看程序的进程PID, ps aux|grep MqttDataToMySQL.jar

输入  kill -9 3073   关闭程序

程序说明

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

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

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
  • 新建数据库和表格
    • 1,新建数据库, 数据库名字 historical_data, 编码格式 utf8
      • 2,正常情况下,用户在服务器上可以点击这个来操作数据库(咱不使用这个,咱使用下面的navicat)
        • 3,在自己的电脑上使用 Navicat 连接数据库
          • 4,新建表格
            • 5,添加几个字段
              • 5,点击保存 表格名字为 humiture_table
              • 测试
                • 1,使用IntelliJ IDEA 打开这节的工程
                  • 2,源码需要使用JDK1.8及其以上版本
                    • 2,修改为自己的数据库信息和MQTT服务器信息
                      • 3,根据自己的设备数据修改解析格式
                        • 4,启动
                          • 5,可以在控制台看到监控的所有设备的数据
                            • 6,打开数据库表格
                            • 生成可执行jar包, 并安装运行到服务器
                              • 1,停止运行
                                • 2,因为程序已经设置过生成jar包,所以用户直接按照下面操作即可生成可执行jar包.
                                  • 3,补充一下实际生成jar包的流程(用户不需要操作)
                                    • 4,生成的jar包的位置
                                      • 5,一般宝塔都已经安装了java虚拟机,可以随便找个目录点击上面的终端
                                        • 6,提示
                                          • 7,把生成的jar包放到服务器上
                                            • 8,点击上面的终端并进入opt目录
                                              • 9,终端输入 java -jar MqttDataToMySQL.jar 命令启动程序
                                                • 10,打印所有设备的数据,说明已经运行起来了
                                                • 让程序在后台运行
                                                  • 1,在终端里面按下键盘的 Ctrl+C 组合键退出程序
                                                    • 2,输入   nohup java -jar MqttDataToMySQL.jar &
                                                      • 3,程序已经运行,3073为程序运行的PID值;并生成了日志文件nohup.out
                                                        • 4,把这个控制台关闭
                                                          • 5,点击刷新一下就可以看到日志文件
                                                            • 6.如何关闭程序
                                                            • 程序说明
                                                              • 1.整个源码就两部分,MQTT和数据库
                                                                • 2.初始化连接池和连接MQTT
                                                                  • 3.连接池配置
                                                                    • 4.连接MQTT,订阅主题
                                                                      • 5.获取MQTT数据,从连接池获取链接对象,把数据写到数据库
                                                                      • 注意事项1
                                                                        • 1,正常情况下java软件也是放到服务器上的, 所以MQTT连接地址应该写为
                                                                          • tcp://localhost:1883
                                                                            • 2,使用 localhost 连接MQTT服务器, 获取MQTT设备的所有数据可以直接订阅 #
                                                                              • 3,同样的数据库连接地址也改为localhost , 数据库用户名和密码应该改为 root 的
                                                                                • 修改完成以后,重新生成jar包,然后放到服务器上即可
                                                                                • 注意事项2
                                                                                  • 常理来讲测试完毕之后需要禁止别的电脑远程直接来访问数据库
                                                                                    • 可以把测试账号设置为本机访问
                                                                                    相关产品与服务
                                                                                    云数据库 SQL Server
                                                                                    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                                                                                    领券
                                                                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档