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


    <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,新建数据库, 数据库名字 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

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

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

  • 相关阅读:
    java读取配置文件 xml properties的几种方法
    aix source 命令
    解决连接ORACLE错误一例:ORA01033: ORACLE 正在初始化或关闭
    oracle database character set
    spring junit 测试
    Atitit。Cas机制 软件开发 编程语言 无锁机制 java c# php
    Atitit.病毒木马的快速扩散机制原理nio 内存映射MappedByteBuffer
    Atitit.木马病毒 webftp 的原理跟个设计
    Atitit.js this错误指向window的解决方案
    Atitit.反编译apk android源码以及防止反编译apk
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/16536951.html
Copyright © 2020-2023  润新知