02-STM32+ESP8266+AIR202/302終端管理篇-把裝置溫溼度資料儲存到MySQL資料庫(Windows)
<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.新建一個數據庫
2.資料庫名字為historical_data ;編碼方式為 utf8
3.新建表格
4.新增幾個欄位
欄位id型別是int, 去掉允許空值, 設定為自增,然後設定為主鍵;
欄位data_time型別設定為timestamp;(作為資料儲存的時間)
欄位client_id型別設定為varchar;(記錄裝置的id)
欄位temperature型別設定為float;(存溫度資料)
欄位humidity型別設定為float;(存溼度資料)
5.點選儲存 表格名字為 humiture_table
開啟原始碼
1.提供了兩份原始碼,分別對應5.X版本的資料庫和8.X版本的資料庫
2.注意兩份原始碼的java虛擬機器版本
5.X的程式可以使用JDK1.7和1.8版本
8.X的程式需要使用JDK1.8版本
為了統一,5.X和8.X的程式,我都是使用的JDK1.8版本編譯.
如果使用者安裝的1.7版本,測試5.X的程式也可以不安裝1.8版本的JDK
可以按照下面的圖示選擇1.7版本
如果使用者先前安裝的1.7版本,使用者測試8.X的程式,需要安裝JDK1.8版本
安裝完以後不需要配置環境變數,只需要在軟體中設定JDK路徑
測試(兩份程式一樣,我隨便開啟一個做說明)
1.根據自己的MySQL資料庫版本選擇開啟下面的工程
2.修改自己的資料庫和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包的位置
如果伺服器沒有安裝JDK,請使用者先安裝JDK
https://www.cnblogs.com/yangfengwu/p/10359132.html
部署到伺服器執行
1.把先前生成的jar包拷貝到伺服器
2.開啟命令視窗
3.進入到jar包所在目錄
4.執行 java -jarDruidTest5.X.jar
5.列印所有裝置的資料,說明已經執行起來了
讓程式在後臺執行
1.關閉控制檯或者Ctrl+C退出程式
2.注意呀!不要犯常識性錯誤!把副檔名選中!
3.在jar包目錄新建一個字尾名字為.bat的檔案
編輯裡面的內容如下 :
DruidTest5.X.jar 就是jar包的名字
@echo off start javaw -jar DruidTest5.X.jar exit
4.雙擊執行即可
5.如果要關閉,找到工作管理員java執行程序,關閉即可
原始碼說明
1.整個原始碼就兩部分,MQTT和資料庫
MQTT使用的是paho.client.mattv3-1.2.0的jar包
資料庫除了基本的jabc聯結器以外,使用了阿里巴巴的開源連結池 druid
2.主函式就兩部分,初始化連線池和連線MQTT
3.連線池部分
4.連線MQTT部分,訂閱主題
5.從連線池獲取連結物件,把資料寫到資料庫
補充
1.也可以指定JDK執行
C:\java8\jdk1.8.0.131 為JDK的安裝路徑
@echo off
set 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 DruidTest5.X.jar
exit
2.關於device/#
一般咱接收所有裝置的資料不用 device/#
而且這樣所有人都可以監控所有裝置資料,這是不可取的!!
我之所以把所有裝置釋出的主題設定為 device/XXXXXX 是為了好測試
一般只設置一級主題就可以了不要加 /XXXXXX
咱在伺服器上可以直接訂閱 # 就可以獲取所有裝置的資料
注意:只有在伺服器上才可以
可以在伺服器上用除錯助手測試下
使用者可以修改程式把連結的地址改為 localhost
把訂閱的主題改為 #
重新編譯下工程
重新生成jar包然後按照上面的步驟放到伺服器執行即可
3.關於MQTT伺服器