【阿里雲IoT+YF3300】2.阿里雲IoT雲端通訊Alink協議介紹

葉帆發表於2019-06-17

如果單單隻有MQTT協議,也許很難支撐起阿里這個IoT大廈。Alink協議的出現,不僅僅是資料從感測端搬到雲端,它就如基因圖譜,它勾畫了一個大廈的骨架,有了它,才有了IoT Studio,才有了大資料分析,才有了後續的一切可能。

MQTT從我的角度來說,相當於以前程式設計思想中的程式導向,而Alink 的出現,則把程式設計思想由原來的程式導向帶到了物件導向的時代。

最早了解Alink協議是在2017年年底,那個時候Alink協議才0.6版,僅有比較核心的功能,並且有些協議描述的,當時平臺上還沒有支援完善。不過不到一年多的時間,Alink協議越來越完善了,功能也越來越強大了。

最新的Alink協議,在阿里雲物聯網平臺上的幫助頁面,有比較詳細的描述:https://help.aliyun.com/document_detail/90459.html?spm=a2c4g.11186623.6.660.4b969bb89pkGOd

為了便於初次接觸Alink協議的人理解,我這裡還是簡要做一些說明。

在官方文件,Alink有一個比較明確的定義: Alink協議是針對物聯網開發領域設計的一種資料交換規範,資料格式是JSON,用於裝置端和物聯網平臺的雙向通訊,更便捷地實現和規範了裝置端和物聯網平臺之間的業務資料互動。

關於Alink協議有幾個很重要的概念和內容需要熟悉。

第一個最最重要的概念就是“三元組”。我們要是在阿里平臺上建立一個物模型,並且把資料上傳到對應的例項。我們第一步需要建立一個“產品”。產品包含屬性、事件和服務(這個後續的文章中,我們會比較詳細的介紹這部分內容)。產品有名稱,也有一個叫產品祕鑰(ProductKey)的自動生成的字串。基於這個產品,我們就可以建立若干個裝置了。裝置有名稱(DeviceName)和裝置祕鑰(DeviceSecret)。產品和裝置的關係,類似物件導向程式語言的類和類例項的關係。

其中,ProductKey、DeviceName和DeviceSecret這三者,就是著名的三元組。三元組和實際的一個物理裝置一一對應。 萬一現實中出現幾個三元組一樣的裝置,那麼後上網的裝置,會讓前一個裝置下線。同時僅有一個這樣的裝置線上。

我們知道了三元組的概念,那麼接下來我們有兩個名詞需要解釋一下了。

第一個就是“一機一密”,顧名思義,就是一個裝置(機器)一個祕鑰。也就是一個裝置嵌入唯一的三元組資訊。產品祕鑰標識產品的型別,裝置名稱和裝置祕鑰對應具體的一個雲端裝置。這樣的模式是安全,每個裝置對應唯一的祕鑰,缺點是,每個裝置必須要預先寫入這唯一的三元組資訊,對裝置的量產帶來了不方便。

針對量產的裝置,為了便於大量裝置生產出來不需要專門一一寫入對應的三元組資訊。提出了第二個名詞“一型一密”,同理,顧名思義,一型一密,就是一種產品型號一種祕鑰。這個時候只要是一種產品就只寫入產品祕鑰即可。大量的裝置寫入的資訊是一樣的,有利於裝置的大批量生產。

“一型一密”的裝置資料上傳的時候要稍微麻煩一些,裝置的名稱必須是相對唯一的,可以自定義的資訊,比如MAC地址或者MCU的ID號之類,把這個裝置名稱上傳到阿里雲IoT平臺,服務端會自動下發裝置的祕鑰,這個過程稱之為“動態註冊”,動態註冊其實值需要一次,可以把獲取的資訊進行儲存,下次上電就不需要動態註冊了。最後裝置湊齊三元組資訊,然後進行正常的登入即可。

第二個比較重要的概念是“透明傳輸”。為什麼把“透明傳輸”作為第二個比較重要的概念呢,其實未來輕量級的裝置或者其他異構裝置,很難說一上來就直接支援Alink協議的。透明傳輸+雲端指令碼共同構成了一個橋,完成了到Alink協議的嬗變。好處是把硬體層面的問題轉換為雲端指令碼的問題,此外就是透明傳輸大都是二進位制協議,通訊的資料量也相對少了,通訊比較快捷,也省流量了。

第三個概念就是“屬性、事件和服務”,其實這是三個概念,不過我們這裡一起說了,後續的文章會分別進行詳細的闡述。屬性、事件和服務,完全對應了“類”的屬性、事件和方法的概念。

屬性有上傳和下發,裝置可以把裝置中採集的各種感測器資料上傳到雲端IoT平臺,也可以在IoT平臺去操作一些屬性,比如一些繼電器屬性,可以遠端控制繼電器的閉和開。

事件相對簡單,可以自定義各種型別,從裝置中根據必要的條件進行上傳,比如裝置電量不夠了,或者其他報警類資訊等等。

服務,其實對應了一系列方法,有入參(也就是輸入的若干引數),也有出參(返回的若干引數),這個服務遠端下發到裝置後,裝置執行對應的方法(可以根據引數進行執行),執行完畢後,可以返回必要的資料。

此外需要了解的一個概念是“同步”和“非同步”,配置服務的時候,可以配置服務的操作模式是“同步”還是“非同步”。

想體驗阿里雲IoT平臺的網友,可以單擊如下連結:

https://dev.iot.aliyun.com/sale?source=deveco_partner_yefan

相關文章