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.  注意后面有个点

  • 相关阅读:
    内置函数大总结
    关于 global nonlocal 用法
    Python 基础数据类型相互转换
    Python 嵌套
    Python 基础关于编码
    「总结」 字符串总结
    「总结」 MLEAutoMaton的各种板子总结
    【洛谷4770】 [NOI2018]你的名字(SAM,线段树合并)
    【洛谷4070】 [SDOI2016]生成魔咒(SAM)
    【SP1811】 LCS
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/14077096.html
Copyright © 2011-2022 走看看