esp8266数据上传到mysql数据库_03-STM32+ESP8266+AIR202/302终端管理篇-把设备温湿度数据存储到MySQL数据库(Windows)...
前言
這一節(jié)把設(shè)備通過(guò)MQTT上報(bào)的數(shù)據(jù)寫(xiě)入MySQL數(shù)據(jù)庫(kù).
注:關(guān)于MySQL數(shù)據(jù)庫(kù)的安裝和基本使用請(qǐng)用戶參考基礎(chǔ)開(kāi)源教程學(xué)習(xí)!
說(shuō)明
此節(jié)代碼使用的?IntelliJ IDEA 軟件編寫(xiě).
整個(gè)程序是使用java連接MQTT,通過(guò)通配符訂閱所有設(shè)備的數(shù)據(jù).
然后通過(guò)Druid連接池把數(shù)據(jù)寫(xiě)入MySQL數(shù)據(jù)庫(kù).
配置數(shù)據(jù)庫(kù)
1.新建一個(gè)數(shù)據(jù)庫(kù)
2.數(shù)據(jù)庫(kù)名字為historical_data ;編碼方式為 utf8
3.新建表格
4.添加幾個(gè)字段
字段id類型是int, 去掉允許空值, 設(shè)置為自增,然后設(shè)置為主鍵;
字段data_time類型設(shè)置為timestamp;(作為數(shù)據(jù)存儲(chǔ)的時(shí)間)
字段client_id類型設(shè)置為varchar;(記錄設(shè)備的id)
字段temperature類型設(shè)置為float;(存溫度數(shù)據(jù))
字段humidity類型設(shè)置為float;(存濕度數(shù)據(jù))
5.點(diǎn)擊保存 表格名字為 humiture_table
打開(kāi)源碼
1.使用IntelliJ IDEA 打開(kāi)
2.源碼需要使用JDK1.8版本
如果用戶先前安裝的1.7版本,需要安裝JDK1.8版本
安裝完以后不需要配置環(huán)境變量,只需要在軟件中設(shè)置JDK路徑
測(cè)試
1.修改自己的數(shù)據(jù)庫(kù)和MQTT服務(wù)器的信息
3.關(guān)于該程序訂閱的主題
提供的教程里面設(shè)備發(fā)布的主題為: device/XXXXXX
如果是WiFi設(shè)備,XXXXXX是WiFi的MAC地址, 如果是GSM設(shè)備,XXXXXX是GSM設(shè)備的IMEI
為了得到所有設(shè)備的數(shù)據(jù),所以訂閱的主題為: device/#
4.關(guān)于該程序解析消息并存到數(shù)據(jù)庫(kù)
設(shè)備發(fā)布的消息:{"data":"TH","bit":1,"temperature":14,"humidity":45}
在MQTT接收的消息回調(diào)里面,獲取解析溫濕度消息,然后把數(shù)據(jù)插入到數(shù)據(jù)庫(kù).
5.運(yùn)行程序
6.可以在控制臺(tái)輸出欄看到監(jiān)控的所有設(shè)備的數(shù)據(jù)
7.重新打開(kāi)數(shù)據(jù)庫(kù)表格
生成可執(zhí)行jar包
1.關(guān)閉軟件
2.注意:因?yàn)槌绦蛞呀?jīng)設(shè)置過(guò)生成jar包,所以用戶直接按照下面圖示操作即可生成可執(zhí)行jar包.
3.補(bǔ)充一下正常生成jar包的實(shí)際流程
4.生成的JAR包的位置
部署到服務(wù)器運(yùn)行
1.如果服務(wù)器沒(méi)有安裝JDK,請(qǐng)用戶安裝JDK
2.把先前生成的jar包拷貝到服務(wù)器
2.打開(kāi)命令窗口
3.進(jìn)入到j(luò)ar包所在目錄
4.執(zhí)行 java -jar MqttDataToMySQL.jar
5.打印所有設(shè)備的數(shù)據(jù),說(shuō)明已經(jīng)運(yùn)行起來(lái)了
讓程序在后臺(tái)執(zhí)行
1.關(guān)閉控制臺(tái)或者Ctrl+C退出程序
2.注意呀!不要犯常識(shí)性錯(cuò)誤!把文件擴(kuò)展名選中!
3.在jar包目錄新建一個(gè)后綴名字為.bat的文件
編輯里面的內(nèi)容如下 :
MqttDataToMySQL.jar?就是jar包的名字
@echo off
start javaw-jar MqttDataToMySQL.jar
exit
4.雙擊運(yùn)行即可
5.如果要關(guān)閉,找到任務(wù)管理器java運(yùn)行進(jìn)程,關(guān)閉即可
6.也可以指定JDK運(yùn)行
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
源碼說(shuō)明
1.整個(gè)源碼就兩部分,MQTT和數(shù)據(jù)庫(kù)
MQTT使用的是paho.client.mattv3-1.2.0的jar包
數(shù)據(jù)庫(kù)除了基本的jabc連接器以外,使用了阿里巴巴的開(kāi)源鏈接池 druid
2.主函數(shù)就兩部分,初始化連接池和連接MQTT
3.連接池部分
4.連接MQTT部分,訂閱主題
5.從連接池獲取鏈接對(duì)象,把數(shù)據(jù)寫(xiě)到數(shù)據(jù)庫(kù)
補(bǔ)充
1.關(guān)于device/#
一般咱接收所有設(shè)備的數(shù)據(jù)不用 device/#
而且這樣所有人都可以監(jiān)控所有設(shè)備數(shù)據(jù),這是不可取的!!
我之所以把所有設(shè)備發(fā)布的主題設(shè)置為 device/XXXXXX 是為了好測(cè)試
一般只設(shè)置一級(jí)主題就可以了不要加? /XXXXXX
咱在服務(wù)器上可以直接訂閱 # 就可以獲取所有設(shè)備的數(shù)據(jù)
注意:只有在服務(wù)器上才可以
可以在服務(wù)器上用調(diào)試助手測(cè)試下
用戶可以修改程序把鏈接的地址改為 localhost
把訂閱的主題改為 #
重新編譯下工程
重新生成jar包然后按照上面的步驟放到服務(wù)器運(yùn)行即可
結(jié)語(yǔ)
用戶可以用以下信息查看數(shù)據(jù)庫(kù)里面的設(shè)備歷史數(shù)據(jù)
IP地址:?mnif.cn
端口號(hào): 3306
用戶名: yang
密碼: 11223344.? 注意后面有個(gè)點(diǎn)
總結(jié)
以上是生活随笔為你收集整理的esp8266数据上传到mysql数据库_03-STM32+ESP8266+AIR202/302终端管理篇-把设备温湿度数据存储到MySQL数据库(Windows)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: spring mysql json_Sp
- 下一篇: mysql gitd 数据结构同步失败_