<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.使用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
https://www.cnblogs.com/yangfengwu/p/10359132.html
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 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 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. 注意后面有個點