zoukankan      html  css  js  c++  java
  • 03-STM32+ESP8266+AIR202/302终端管理篇-把设备温湿度数据存储到MySQL数据库(Linux)

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

    前言

    这一节把设备通过MQTT上报的数据写入MySQL数据库.

    注:关于MySQL数据库的安装和基本使用请用户参考基础开源教程学习!

    说明

    此节代码使用的 IntelliJ IDEA 软件编写.

    整个程序是使用java连接MQTT,通过通配符订阅所有设备的数据.

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

    配置数据库

    1.新建一个数据库

    数据库名字为 historical_data

    2.使用 Navicat 连接数据库

    注:主机名或IP地址如果没有配置域名,则直接填写服务器IP地址

    3.新建表格

    4.添加几个字段

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

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

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

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

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

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

    打开源码

    1.使用IntelliJ IDEA 打开

     

    2.源码需要使用JDK1.8版本

    如果用户先前安装的1.7版本,需要安装JDK1.8版本

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

    测试

    1.修改自己的数据库和MQTT服务器的信息

    3.关于该程序订阅的主题

    提供的教程里面设备发布的主题为: device/XXXXXX

    如果是WiFi设备,XXXXXX是WiFi的MAC地址, 如果是GSM设备,XXXXXX是GSM设备的IMEI

    为了得到所有设备的数据,所以订阅的主题为: device/#

    4.关于该程序解析消息并存到数据库

    设备发布的消息:{"data":"TH","bit":1,"temperature":14,"humidity":45}

    在MQTT接收的消息回调里面,获取解析温湿度消息,然后把数据插入到数据库.

    5.运行程序

    6.可以在控制台输出栏看到监控的所有设备的数据

    7.重新打开数据库表格

    生成可执行jar包

    1.关闭软件

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

    3.补充一下正常生成jar包的实际流程

    4.生成的JAR包的位置

    部署到服务器运行

    1.一般宝塔都已经安装了java虚拟机,可以随便找个目录点击上面的终端

    输入 java -version

    注:如果没有安装java虚拟机,百度安装哈.

    2.把先前生成的jar包拷贝到服务器

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

    3.点击上面的终端并进入opt目录

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

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

    6.查看一下数据库的表格,应该记录了设备的数据

    让程序在后台执行

    1.在中断里面按下键盘的 Ctrl+C 组合键退出程序

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

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

    4.关闭窗体

    或者点击回车

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

    6.可以查看下日志文件

    7.关闭程序

    先查看程序的进程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.从连接池获取链接对象,把数据写到数据库

    补充

    1.关于device/#

    一般咱接收所有设备的数据不用 device/#

    而且这样所有人都可以监控所有设备数据,这是不可取的!!

    我之所以把所有设备发布的主题设置为 device/XXXXXX 是为了好测试

    一般只设置一级主题就可以了不要加  /XXXXXX

    咱在服务器上可以直接订阅 # 就可以获取所有设备的数据

    注意:只有在服务器上才可以

     

    用户可以修改程序把链接的地址改为 localhost

    把订阅的主题改为 #

    重新编译下工程

    重新生成jar包然后按照上面的步骤放到服务器运行即可

    结语

    用户可以用以下信息查看数据库里面的设备历史数据

    IP地址: mnif.cn

    端口号: 3306

    用户名: yang

    密码: 11223344.  注意后面有个点

  • 相关阅读:
    SD卡测试
    测试人员可能会遇到的问题
    HDU 1024 Max Sum Plus Plus
    HDU 1176 免费馅饼
    HDU 1257 最少拦截系统
    HDU 1087 Super Jumping! Jumping! Jumping!
    poj 1328 Radar Installation
    poj 1753 Flip Game
    HDU 1003 Max Sum
    HDU 5592 ZYB's Premutation(BestCoder Round #65 C)
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/14077096.html
Copyright © 2011-2022 走看看