前言

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

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

说明

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

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

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

配置数据库

1.新建一个数据库

2.数据库名字为historical_data ;编码方式为 utf8

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.如果服务器没有安装JDK,请用户安装JDK

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

2.打开命令窗口

3.进入到jar包所在目录

4.执行 java -jar MqttDataToMySQL.jar

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

让程序在后台执行

1.关闭控制台或者Ctrl+C退出程序

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

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

编辑里面的内容如下 :

MqttDataToMySQL.jar 就是jar包的名字

@echo off

start javaw-jar MqttDataToMySQL.jar

exit

4.双击运行即可

5.如果要关闭,找到任务管理器java运行进程,关闭即可

6.也可以指定JDK运行

C:\java8\jdk1.8.0.131  为JDK的安装路径

@echo offset 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 MqttDataToMySQL.jar

exit

源码说明

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

esp8266数据上传到mysql数据库_03-STM32+ESP8266+AIR202/302终端管理篇-把设备温湿度数据存储到MySQL数据库(Windows)...相关推荐

  1. STM32--ESP8266物联网WIFI模块(贝壳物联)--温湿度数据上传服务器显示

    本文适用于STM32F103C8T6等MCU,其他MCU可以移植,完整资源见文末链接 一.简介 随着移动物联网的发展,各场景下对于物联控制.数据上传.远程控制的诉求也越来越多,基于此乐鑫科技推出了便宜 ...

  2. MaxCompute Tunnel SDK数据上传利器——BufferedWriter使用指南

    为什么80%的码农都做不了架构师?>>>    摘要: MaxCompute 的数据上传接口(Tunnel)定义了数据 block 的概念:一个 block 对应一个 http re ...

  3. 10个MySQL加载数据内文件示例以将文本文件数据上传到表

    10个MySQL加载数据内文件示例以将文本文件数据上传到表 如果文本文件中有数据,则可以轻松地将它们上载到数据库中的一个或多个表. 在MySQL数据库(或MariaDB)中,使用" load ...

  4. Excel数据上传并且导入数据库

    Excel数据上传并导入数据库 Excel表中的数据示例样板 相关依赖(本博客编写环境springboot) <!--poi实现excel导入导出--><dependency> ...

  5. Arduino UNO +ESP8266采集数据上传到贝壳网

    集成电路设计大赛赛程将至,我现在还是毫无头绪,然后又报了一个互联网+,比赛报了,东西就必须出来,时间很紧的情况下,所以选择了开源的arduino的进行完成.从开始接触Arduino到完成工程,前前后后 ...

  6. EXCEL与Mysql数据相互同步---EXCEL数据上传到Mysql,从Mysql下载数据到EXCEL__1

    EXCEL数据上传到Mysql,从Mysql下载数据到EXCEL 总结一下最近项目中用到的excel和mysql数据同步流程(Springboot里面使用的jdbcTemplate,如果要集成myba ...

  7. 正点原子STM32f103ZE精英开发板实现基于ESP8266 WIFI模块温湿度数据上传至乐联网平台

    文章目录 一.准备工作 二.实现流程 1.AT指令 2.接入乐联网平台 3.代码实现 三.数据可视化分析 一.准备工作 1.准备一块正点原子STM32f103ZE精英开发板 2.在某宝上购买好正点原子 ...

  8. 树莓派数据上传数据库_树莓派内部数据向domoticz的上传

    树莓派的数据上传->Domoticz 树莓派的温度检测到的数据可以通过API发送到domoticz 示例代码:#!/usr/bin/env python # -*- coding:utf-8 - ...

  9. android拦截请求数据库,拦截所有App的网络请求并将需要的数据上传到属于你自己的服务器...

    前提 : 有时会遇到这样的需求:将一些别人app上比较优质的内容,用到自己产品中.由于别人的app做了大量的参数加密, 我们获取不到加密规则,所以使用接口直接调用的方法就走不通. 本文就是要介绍使用逆 ...

最新文章

  1. C语言:一个涉及指针函数返回值与printf乱码、内存堆栈的经典案例
  2. 跟我一起学WCF(2)——利用.NET Remoting技术开发分布式应用
  3. python个人收支管理系统相关题目_练手题:计算人均付费(SQLPython)
  4. 「hadoop」cdh5.12离线安装(未完成)
  5. 中国信通院金融科技负责人韩涵:大数据是生产资料的变革,区块链是生产关系的变革...
  6. oracle11g memory_target,Oracle11g启动报:ORA-00845: MEMORY_TARGET not supported on this system
  7. java flash 压缩_Java和flash通信中数据的zlib压缩与解压缩
  8. 敏捷开发一千零一问系列之十四:敏捷开发加班吗?
  9. 清除浮动-父级添加overflow(HTML、CSS)
  10. Python 基础课程第十一天
  11. CentOS操作系统的22个log日志
  12. MySQL8.0和MySQL 5的不同
  13. matlab里function函数的用法,function函数 function函数的具体用法
  14. 电脑误格式化的数据怎么恢复,误格式化数据恢复教程
  15. 珍惜生命之水,节约从我做起
  16. 2019 Python接口自动化测试框架实战开发(一)
  17. 工业互联网·制药机械设备远程在线监控系统
  18. DeepMind研究团队使用Sawyer进行连续离散混合学习研究和验证
  19. 调用ycwin.cpp接口的YC服务器源码ycs.js
  20. 【C/C++学习笔记】C语言结构体指针的输入输出

热门文章

  1. 处理对象的多种状态及其相互转换——状态模式
  2. 生活本该如此——莫言
  3. C# 什么是【事件驱动】
  4. Gerrit评审报错[remote rejected] develop- refs/for/develop(no new changes)
  5. cxf和spring结合出现问题
  6. 【超100%解法】剑指 Offer 33. 二叉搜索树的后序遍历序列
  7. 【简洁代码】1053 住房空置率 (20分)_22行代码AC
  8. C语言满分:L1-061 新胖子公式 (10分)
  9. 解题报告——蓝桥 试题 基础练习 矩阵乘法——27行代码AC
  10. 数据库原理与应用(SQL Server)笔记 第十一章 游标