1. 程式人生 > 實用技巧 >02-STM32+ESP8266+AIR202/302終端管理篇-把裝置溫溼度資料儲存到MySQL資料庫(Windows)

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伺服器