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.  注意后面有個點

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM