物联网全栈教程-从云端到设备(四)
請下載今天的附件,因為有表格,所以比論壇上的內容更詳細。
?
1、MQTT協議是IOT(Internet of Things)領域的一個主流協議
?
在物聯網的時代,每一個傳感器每一個設備都想接入互聯網進行數據交換。MQTT協議非常適合這樣的場合。目前國內的主流IOT服務器供應商均提供對MQTT協議的解析比如百度云計算,阿里云計算等。MQTT協議的實現也非常簡單,對帶寬的要求不高,對網絡鏈接的可靠性要求也不高,而且協議本身制定了一定的機制來處理突發事件。
?
MQTT協議不僅可以在物聯網領域發揮重要作用,同時也可以用于多臺機器之間的信息交換比如一個車間里面所有的傳感器之間數據的交換。
?
MQTT協議也不僅僅局限于運行在互聯網通信上。它是一個通信規則,對通信方式的實現不關心。通常我們提到物聯網指的是通過 TCP/IP 的方式實現了通信,也就是利用互聯網實現,因為互聯網可以提供一個非常可靠的雙向通信。
?
本學習手冊根據MQTT V3.1.1 版本編寫
官方手冊下載地址:http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.doc
下面章節大部分內容均參考此官方手冊。
?
2、MQTT 通信協議需要有三個角色參與
?
這段文字參考百度云計算的幫助文檔:
https://cloud.baidu.com/doc/IOT/MQTTProtocol.html#.E0.F6.0C.38.86.9F.BE.F8.FD.AC.D9.00.29.12.24.B6
?
MQTT協議提到的一個名詞“主題”,類似于文件夾的名字一樣。比如小王是電腦的主人,他的電腦上面有a,b兩個文件夾,小劉每次存儲的文件喜歡放到a文件夾,小宋每次存儲的文件喜歡放到b文件夾。那么當小林想看小劉的文件時,只需要看a文件夾就可以了。上述的“a”文件夾的名稱,在MQTT協議里面稱作主題 。
?
左圖詮釋了MQTT協議里的三個角色:發布者客戶端(負責發送消息),代理服務器(負責接收和分發消息),訂閱者客戶端(負責接收消息)。
在MQTT協議里,“主題”就是一個文件夾,發布的消息可以送到一個“主題”里面,訂閱者也可以從“主題”里面讀取到消息。
代理服務器在國內有百度的 IoT Hub ,也有阿里云的IoTHub,還有很多其他品牌的服務器。
發布者客戶端和訂閱者客戶端既可以是同一臺設備,也可以是不同的設備,只要這臺設備可以通過服務器的認證,并且遵循MQTT協議,就可以發布或者訂閱消息。本學習手冊的重要內容就是兩個客戶端如何與服務器“交流”。
3、MQTT 通信協議和大數據
?
(1)?????? 小劉采集的信號是溫度信息,他每間隔1分鐘就上傳一次溫度信息到服務器,同時他發送的主題是 a 。
(2)?????? 服務器接收到小劉的溫度信息后,會查找當前都有哪些訂閱者想看主題是 a 的信息。
(3)?????? 小林訂閱了主題是 a 的內容,只要小劉發送一次信息,小林就可以立馬接收到對應的信息。
(4)?????? 小劉和小林都需要事先通過賬號密碼的方式連接到服務器。小劉就像在野外工作的工作人員辛苦采集信號,而小林就像在辦公室的老板千里之外洞察前線的一手信息。
(5)?????? 如果有1000個小林這樣的角色不停地給服務器發送溫度數據。我們都知道服務器有數據保存和數據處理的能力,這時候就可以結合機器學習的相關知識去處理和分析這些數據,從而為人類的決策提供參考。
?
4、在MQTT 通信協議里,字符串需要遵守UTF-8 編碼規范
?
在MQTT通信協議里,數據傳送是以Bit(位)為單位的,和我們常見的TTL串口類似不過他們本質上不是一個東西。MQTT協議約定:數據傳送時,高字節在前,同時,每個字節里面的最高位先傳輸。
5、MQTT 一幀消息包含的內容
?
MQTT 的一幀典型的消息最多由三部分組成:
?
固定頭(所有的消息必須包含)? +? 可變頭(有些沒有)+? 有效內容(有些沒有)
?
MQTT協議約定,根據不同的功能實現,固定頭是必須要的,其他兩部分內容可有可無(比如心跳包的發送和接收只要固定頭即可,而從機發送的鏈接請求則包含了三個部分)。
6、后面還有內容,我做成了PDF了,里面有表格啥的,論壇上編輯不方便,你下載查看吧。里面詳細講解了組合一幀報文的過程。附件中還有一個是MQTT協議的中文手冊,更權威。
總結
以上是生活随笔為你收集整理的物联网全栈教程-从云端到设备(四)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何查看CentOS操作系统版本
- 下一篇: Android版本win7镜像下载,【b