天天看點

ALink協定是最簡單的通信協定

物聯網全棧教程-從雲端到裝置(六)

關注零妖的微信公衆号,擷取第一手物聯網的技術幹貨:  LINGYAOIOT

物聯網項目在開發初期,需要雲端和裝置端兩個工種的工程師一起談談實作的技術細節。有一個叫作ALink協定的語言,成功解決了兩個物種之間交流困難的世紀難題!

ALink協定是針對物聯網開發領域設計的一種資料交換規範。裝置端按照這個簡單的規範把資料組織一下發送給雲端,雲端工程師也懂這個簡單的規範,可以直接拿這個資料進行處理。同時還解決了調試困難的痛點:雲端工程師使用一個叫做MQTT用戶端的電腦工具,就可以發送符合ALink協定的測試資料調試雲端産品的代碼;裝置端工程師就可以在給單片機寫代碼的時候直接組織一個符合ALink協定的測試資料,進而不用依賴雲端下發。

物聯網将實體世界的萬物接入網絡并通過整合各類服務實作智能化。“物”(Things)作為整個網絡中的基礎節點和商業觸手,既是環境資訊的采集者,也是智能服務的提供者和承載者。“物”就是裝置端。

你首先需要對物聯網中的“物”能做什麼,能提供什麼樣的服務進行描述。這就需要從産品層面進行功能模組化,定義物的“屬性”(Property)、“服務”(Service)和“事件”(Event)。最簡單的情況下你定義一個屬性就夠了,比如零妖的物聯網彈幕器項目,就僅有兩個屬性。

通過功能模組化将各類裝置統一抽象為雲端的資源,并對外暴露相應的接口,以滿足不同場景下不同系統的調用和快速內建。

物模型是對裝置是什麼,能做什麼的描述,包括裝置身份辨別、連接配接狀态、描述資訊,以及裝置的屬性(properties)、服務(services)、事件(events),後三者構成了裝置的功能定義。Link Develop通過定義一種物的描述語言來描述物模型,稱之為 TSL(即 Thing Specification Language)。

有一種非常簡單的資料格式,叫作JSON字元串,有程式設計基礎的人兩分鐘就能研究清楚那是什麼。ALink協定的資料格式就是JSON字元串的格式。零妖隻是提一下而已,ALink協定想讀懂根本不用了解啥是JSON,我要開車了,兄弟們請坐好扶穩。

ALink協定是最簡單的通信協定

看到了吧,就是這麼簡單。上面那個截圖就是裝置上報自己屬性的字元串。裝置端發送的資料其實就是那些内容,而且零妖也解釋很清楚了。總結一下,就是 <“屬性”:數值 >的做法,非常類似 <鍵:值> 的做法。反正對于單片機來說,想要上報哪個屬性,就發送哪個,修改一下後面的數值就行了。

同理,雲端下發的資料也是符合ALink協定的。單片機想解析這些資料就更簡單了,簡直不要太爽。我們隻管記住這些固定的格式就行了,其他的不用修改。上行資料和下行資料在格式上都一樣,但是有些固定的地方是不一樣的,可以去  

https://linkdevelop.aliyun.com/developGuide#kgd6wp.html

  檢視單個裝置的封包,複制你需要的封包,然後修改其中的屬性名稱和數值,就可以了。

對于雲端開發的工程師來說,要做的工作就是調用阿裡雲提供的API,往裡面扔資料就行了,自己更需要關注的是業務的實作邏輯而不是這些細節問題。雲端開發代碼的流程零妖會在後面的文章裡講一個小小的Demo,幫助你快速上手。

你一定正在好奇屬性的名稱是怎麼得到的。零妖告訴你,屬性的名稱和取值範圍是在 LinkDevelop 平台上,“裝置開發”裡面,定義産品的時候自己選擇的。零妖的下一篇文章将會講解“裝置開發”的内容,這部分是在雲端完成的工作,也是團隊開會時候需要确定的内容。