NBIoT的傳輸量比較 MQTT vs Get vs Post

MQTT是目前在IoT領域最重要的傳輸方式,MQTT大家都知道具有輕量化傳輸的特點,但是能省下多少流量卻都是理論上大概算一下而已,這次我就用國產的WNB-303 NBIoT套件及遠傳定量卡做測試(關於本套件可參考本文:國產NBIoT WNB-303使用方式),測試項目包括MQTT、HTTP GET、HTTP POST都對ThingSpeak傳輸100次溫度及濕度,本次傳輸接收對象ThingSpeak可參考本文:第14篇 ESP32 資料庫存取ThingSpeak圖表製作,再進入遠傳的後端CPM平台觀察流量消耗變化,讓大家了解MQTT究竟能節省你多少流量。

1. HTTP POST

第一個測試的傳輸方式為HTTP POST,HTTP POST是非常常見的傳輸方式,具有較高的安全性,一般的API都是POST方式傳遞參數,本次就以POST為第一個測試對象,每次傳輸都採用重新連線,也就是每次循環都是 1.連線2.傳輸3.斷線,不保留連線,包括握手都必須重來,這樣更能計算出差異,後續其他兩種協定也都是採用同種方式。

先查看遠傳後台列出目前的傳輸流量11.7147M。

接下來利用POST方式傳輸100次後,剩餘流量為11.8453

兩者相減得總消耗流量:11.8453 – 11.7147 =0.1306M=133.7344K

由於傳輸100次,再除100獲得每次傳輸耗費流量為1.33744K,也就是說每次傳輸都要超過1K的流量,真是恐怖!

2. HTTP GET

GET也是傳統非常常見的參數傳遞方式,但是由於資料傳遞過程直接列在網址內,因此沒有辦法加密不具有安全性,雖然如此對於不需要保密的資料依然是非常常見的。

本次測試一樣測試對ThingSpeak以GET法傳輸100次後查看流量變化。

兩者相減得總消耗流量:11.9547-11.8453 =0.1094M=112.0256K

由於傳輸100次,再除100獲得每次傳輸耗費流量為1.120256K,雖然傳輸量略少於POST,但每次傳輸都依然要超過1K的流量!

3. MQTT

MQTT傳輸對象一樣為ThingSpeak,ThingSpeak只接受自己的MQTT進行傳輸,其MQTT服務網址為mqtt3.thingspeak.com,通訊PORT為1883,帳號、密碼、Client、Topic、Content都必須依照他的規定,關於設定會在後續寫篇專文介紹。

傳輸100次前後的流量變化如下

經計算消耗流量=12.1154-12.0915=0.0239M=24.4736K

相當於每次傳輸耗費流量為0.244K,與上面的GET與POST來說,都可以看出很大的差異,確實省非常多

4. MQTT : GET : POST 流量比較

整合上面三個數據列表如下,以比例來說,POST每傳一次,可以讓MQTT傳輸5.5次。

若以遠傳30M訂製卡來說,每分鐘傳輸1次,30M流量MQTT用約87天,但GET與POST都不滿20天

若5分鐘傳1次,則MQTT可用435天約一年半,而GET與POST都不滿100天就掛了。

最後算成本的話,每百次的傳輸成本MQTT約0.08元,而GET與POST則是0.36及0.43元。

比較MQTT協定HTTP GETHTTP POST
消耗量0.244K1.120K1.337K
以MQTT為11次4.6次5.5次
30M可傳次數125,523次27,422次22,971次
1分鐘傳1次可用87天可用19天可用16天
5分鐘1次可用435天可用95天可用80天
每百次成本0.079元0.364元0.435元

最後總結就是,NBIoT這種流量計費的還是用MQTT吧,HTTP的GET或POST就留給WIFI吧。

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *