1. 程式人生 > >物聯網全棧教程-從雲端到裝置(十一)

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


千千萬萬的物聯網裝置通過ALink協議接入到了雲端,它們不斷地按照ALink協議的規範向雲端彙報資料,同時也一直在等待伺服器下發一些資料並處理這些資料。關於物聯網裝置端如何搞定這些資料,零妖老哥會在下一篇文章中以一個型號叫做STM32F103的微控制器為例子進行硬體電路和程式程式碼的詳細講解,不要說你沒有基礎什麼都不懂,你要是沒有開啟電腦上網的基礎的話就關閉這篇文章吧(⊙o⊙ )。
今天這篇文章零妖將告訴你雲端怎麼呼叫裝置的資料。呼叫裝置資料,給裝置下發資料,獲取裝置當前是否線上等等,都是通過呼叫阿里雲提供的API(相當於一個子函式,執行一下出一個結果那種)來實現的。我們就以一個API的使用方法為例子進行示範,起一個拋磚引玉的作用。



零妖在上一章介紹了一種方法,在網頁上顯示了一個儀表盤,今天就來嘗試一下將裝置上報的溫度資料顯示到儀表盤上。
在LinkDevelop平臺中定義好一個產品後,你會得到一個產品的IoT-TSL(物的描述語言)。在雲端看來,裝置無非就是一串串符合ALink協議規範的JSON字串。零妖老哥當初定義物聯網彈幕器這個裝置有兩個屬性,一個是溫度,一個是彈幕。

好了,我們的目標很明確了,我們要通過呼叫API的方式獲取裝置的一個屬性,即獲取溫度這個屬性。請你開啟這個網址,找到  物的管理服務 裡面的 獲取物的指定屬性快照資料 這個API的官方幫助文件。


然後就你就可以看到關於這個API的使用方法示例了,其實很簡單,只需要修改一下他們例程裡面的引數,然後通過例程上給的方法呼叫一下,就可以得到一個返回值,這個返回值裡面會有一個引數就是我們想得到的溫度屬性的數值。



擼起袖子開始抄!複製,貼上!注意一下哈,這裡面也import了一個東西,其實是匯入了另外一個新的元件,名字叫做   @bone/linkdevelop-sdk  ,你要自己安裝一下。方法在零妖的上一篇文章中已經介紹了,不再說了啊。然後我們要修改裡面的內容。你需要進入你的 測試裝置 這個頁面,讀取兩個引數如下圖。這裡得到的引數是 ProductKey 和 ProductSecret 。


然後去 功能定義 裡看一下溫度屬性的識別符號:


最後把上述得到的三個引數複製到程式碼裡,替換原來的數值。



上述程式碼中有一個地方是零妖自己琢磨了一會後發現的,就是修改儀表盤顯示數值的那個變數。有個小技巧,先猜測某個變數最有可能是對應儀表盤顯示的,然後修改這個變數,觀察結果。(高階的我真的不懂了,誰讓我是半路出家的竟會些歪門邪道。)
告訴你一個很神奇的程式碼,能夠提高除錯程式碼的效率:   console.log(this.Temperature);  ,作用是在控制檯輸出this.Temperature這個變數的內容,你可以修改為任何你想檢視的變數。
零妖並不是特別擅長寫“雲上”這些程式碼,我只是告訴你一種方法來呼叫物的屬性。其實如果你是專業的雲端工程師,到這裡就夠了,你可以去開發你的程式碼了,不管你是基於哪個框架的哪種程式語言的,只要會呼叫API不就行了嗎?

最後,開啟我們的MQTT客戶端,模擬裝置端傳送一個數據過來。儀表盤同步變化了!


階段小結:如果你看到這裡,其實就可以完成雲端工程師的工作了。完全可以用MQTT客戶端來模擬裝置傳送資料和接收資料,你就能除錯雲端和應用端的程式碼了。關於裝置端的研發套路,零妖從下一篇文章開始介紹,主角是STM32F103C8T6這顆微控制器!

原文