? 眾所周知,市面上有很多云平臺(tái),阿里云、騰訊云、中移OneNET、華為云、百度云、TLink云等等......并且每家云平臺(tái)都有自己的協(xié)議,工程師要移植不同的SDK代碼或基于各家的手冊(cè)文檔對(duì)接不同的協(xié)議,看著都頭大!?。?/p>
為解決繁瑣的云平臺(tái)開(kāi)發(fā)困擾,
合宙IoT_CLOUD應(yīng)運(yùn)而生,一庫(kù)打通所有云平臺(tái)!
本文將以Air780E+LuatOS作為示例,教你使用IoT_CLOUD連接騰訊云平臺(tái)。
注意:此庫(kù)為網(wǎng)絡(luò)通用庫(kù)不限制型號(hào),即【所有LuatOS支持的蜂窩模組都可使用】。
本文同樣適用于:
Air780EX/Air780EG/Air780EP/Air780EPS…
一、**合宙IoT_CLOUD簡(jiǎn)介 **
編輯
1.1 IoT_CLOUD特色簡(jiǎn)介
IoT_CLOUD——是合宙專門為了合并IoT平臺(tái)而制作的LuatOS通用庫(kù), 意在使用統(tǒng)一且極簡(jiǎn)的代碼接入各個(gè)云平臺(tái),輕松實(shí)現(xiàn)云功能。
用戶無(wú)需為那么多云平臺(tái)的接入而頭疼,只需要極簡(jiǎn)的通用API即可輕松上云!并且因?yàn)橥ㄓ?,所以云平臺(tái)之間的遷移也十分方便。
1.2 IoT_CLOUD功能實(shí)現(xiàn)
IoT_CLOUD庫(kù)本質(zhì)就是上層設(shè)計(jì)一套通用的API,用庫(kù)來(lái)實(shí)現(xiàn)每個(gè)平臺(tái)功能的對(duì)接。
目前已經(jīng)實(shí)現(xiàn)了各個(gè)平臺(tái)的所有注冊(cè)方式, 其中自動(dòng)注冊(cè)會(huì)將相關(guān)驗(yàn)證信息保存KV,隨后使用此驗(yàn)證信息進(jìn)行連接,通知針對(duì)每個(gè)平臺(tái)添加了特有系統(tǒng)實(shí)現(xiàn),比如:設(shè)備上線通知、設(shè)備版本號(hào)上傳、OTA功能等。
用戶無(wú)需管理這些信息,只需要注意相關(guān)下發(fā)消息做應(yīng)用邏輯即可。
https://gitee.com/openLuat/LuatOS/blob/master/demo/iotcloud/main.lua
二、**騰訊云簡(jiǎn)介 **
騰訊云物聯(lián)網(wǎng)開(kāi)發(fā)平臺(tái) (IoT Explorer)——是面向智慧生活與產(chǎn)業(yè)互聯(lián)應(yīng)用的物聯(lián)網(wǎng)PaaS平臺(tái),為基于物聯(lián)網(wǎng)的各行業(yè)設(shè)備制造商、方案商及應(yīng)用開(kāi)發(fā)商提供一站式設(shè)備智能化服務(wù)。
平臺(tái)提供海量設(shè)備連接與管理能力及基于騰訊連連的小程序應(yīng)用開(kāi)發(fā)能力,并打通騰訊云基礎(chǔ)產(chǎn)品及AI能力,聚合騰訊生態(tài)內(nèi)容能力。從而提升傳統(tǒng)行業(yè)設(shè)備智能化的效率,降低用戶的開(kāi)發(fā)運(yùn)維成本。
騰訊云官網(wǎng):
https://cloud.tencent.com/
**三、前期準(zhǔn)備工作 **
3.1 云平臺(tái)準(zhǔn)備
注冊(cè)/登錄騰訊云賬號(hào),新建公共實(shí)例并且新建一個(gè)項(xiàng)目,后面我們會(huì)在此項(xiàng)目中進(jìn)行演示。
注意:騰訊****新出了個(gè)V2版本開(kāi)發(fā)平臺(tái),本庫(kù)也支持但是不推薦使用。
至筆者編寫此文章為止,V2較V1版本去掉了證書校驗(yàn),去掉了自動(dòng)注冊(cè)中自動(dòng)創(chuàng)建設(shè)備功能,并且已經(jīng)和騰訊云確認(rèn)此改動(dòng)。是的,自動(dòng)注冊(cè)的自動(dòng)創(chuàng)建設(shè)備改沒(méi)了,自動(dòng)注冊(cè)要手動(dòng)一個(gè)一個(gè)創(chuàng)建設(shè)備,呵呵。。。
3.2 硬件準(zhǔn)備
**四、實(shí)戰(zhàn)教學(xué) **
接下來(lái),我們就不按部就班的介紹每個(gè)API,這樣很枯燥。我們直接實(shí)戰(zhàn),跟著文檔從0一步一步進(jìn)行下去,每一步介紹涉及到的API,流程結(jié)束也就學(xué)會(huì)IoT_CLOUD庫(kù)的使用。
4.1 設(shè)備注冊(cè)
1)設(shè)備注冊(cè)API
注冊(cè)的API只有一個(gè),但是支持了所有的注冊(cè)方式,使用也很簡(jiǎn)單。
創(chuàng)建云平臺(tái)對(duì)象
iotcloud.new(cloud,iot_config,connect_config)
?
編輯
返回值:
?
編輯
2)設(shè)備注冊(cè)分類
騰訊云支持密鑰校驗(yàn)、證書校驗(yàn)、動(dòng)態(tài)注冊(cè)三種注冊(cè)方式(實(shí)際是四種,其中動(dòng)態(tài)注冊(cè)里分兩種,但是對(duì)用戶無(wú)感所以這里不進(jìn)行拆分)。
▼ 密鑰校驗(yàn)(手動(dòng)注冊(cè)) ▼
密鑰校驗(yàn)即使用密鑰作為校驗(yàn)憑據(jù),首先新建產(chǎn)品:
?
編輯
?
編輯
按照要求填寫,認(rèn)證方式選擇密鑰認(rèn)證,之后我們點(diǎn)進(jìn)去新建個(gè)設(shè)備,設(shè)備名稱我們可以直接填寫模組的imei。
?
編輯
這樣我們就創(chuàng)建好了設(shè)備,我們點(diǎn)進(jìn)去看下設(shè)備信息。
?
編輯
可以看到我們需要的數(shù)據(jù)已經(jīng)被貼心的加了一鍵復(fù)制,我們要記錄下 【設(shè)備名稱、產(chǎn)品ID、設(shè)備密鑰】 這三個(gè)數(shù)據(jù),使用這三個(gè)數(shù)據(jù)我們就可以上云了。
接下來(lái),我們看下代碼具體怎么用:
?
編輯
第一個(gè)參數(shù)表示我們使用的是騰訊云,第二個(gè)參數(shù)我們將上面得到的三個(gè)參數(shù)填寫到table中即可,so easy~
▼ 證書校驗(yàn)(手動(dòng)注冊(cè)) ▼
證書校驗(yàn)即使用證書作為校驗(yàn)憑據(jù),注意選擇證書認(rèn)證。
注意:V2版本騰訊云不支持新建此校驗(yàn)方式。
?
編輯
之后和上面密鑰校驗(yàn)一樣的創(chuàng)建設(shè)備流程,創(chuàng)建之后我們?cè)賮?lái)看看設(shè)備信息。
?
編輯
大家應(yīng)該猜到了,還是三個(gè)參數(shù):
產(chǎn)品名稱、產(chǎn)品ID,最后一個(gè)變成了設(shè)備證書。
接下來(lái),我們?cè)賮?lái)看下代碼具體怎么用:
?
編輯
第一個(gè)參數(shù)表示我們使用的是騰訊云,第二個(gè)參數(shù)我們將上面得到的產(chǎn)品名稱 產(chǎn)品ID,第三個(gè)參數(shù)寫上我們的證書,同樣很簡(jiǎn)單~
▼ 動(dòng)態(tài)注冊(cè)(推薦) ▼
上面兩種方式都需要我們手動(dòng)在云平臺(tái)上創(chuàng)建設(shè)備,但是我們的產(chǎn)品會(huì)有很多設(shè)備,手動(dòng)創(chuàng)建太麻煩。
動(dòng)態(tài)注冊(cè)就解決了這些問(wèn)題:
——可以實(shí)現(xiàn)統(tǒng)一代碼使用時(shí)動(dòng)態(tài)進(jìn)行設(shè)備注冊(cè),無(wú)需手動(dòng)創(chuàng)建。
注意:V2版本騰訊云不支持自動(dòng)創(chuàng)建設(shè)備
這樣我們就簡(jiǎn)單了很多,上面兩種方式創(chuàng)建的產(chǎn)品詳情中都有動(dòng)態(tài)注冊(cè)開(kāi)關(guān),我們只需要打開(kāi)動(dòng)態(tài)注冊(cè)開(kāi)關(guān)和自動(dòng)創(chuàng)建設(shè)備開(kāi)關(guān)即可支持兩種方式的動(dòng)態(tài)注冊(cè)。
?
編輯
隨后會(huì)生成動(dòng)態(tài)注冊(cè)上方的產(chǎn)品密鑰,我們復(fù)制產(chǎn)品ID和產(chǎn)品密鑰即可。
接下來(lái),我們?cè)賮?lái)看下代碼具體怎么用:
?
編輯
第一個(gè)參數(shù)表示我們使用的是騰訊云,第二個(gè)參數(shù)我們將上面得到的產(chǎn)品ID和產(chǎn)品密鑰,非常的簡(jiǎn)單!
4.2 連接/斷開(kāi)云平臺(tái)
注冊(cè)完成了,我們開(kāi)始上云了~ 非常簡(jiǎn)單,iotcloud庫(kù)的api基本和mqtt庫(kù)一樣,所以連接只需要一個(gè)API。
1)云平臺(tái)連接
cloudc:connect()
參數(shù):無(wú)
返回值:無(wú)
例子:
iotcloudc:connect()
連接說(shuō)了,我們也說(shuō)一下斷開(kāi)連接,也只需要一個(gè)API。
2)云平臺(tái)斷開(kāi)
cloudc:disconnect()
參數(shù):無(wú)
返回值:無(wú)
例子:
iotcloudc:disconnect()
4.3 訂閱/取消訂閱主題
同上,訂閱和取消訂閱也很簡(jiǎn)單。
1)云平臺(tái)訂閱
cloudc:subscribe(topic, qos)
參數(shù):
傳入值類型 | 解釋 |
---|---|
string/table | 主題 |
number | topic為string時(shí)生效0/1/2 默認(rèn)0 |
返回值:無(wú)
2)云平臺(tái)取消訂閱
cloudc:unsubscribe(topic)
參數(shù):
傳入值類型 | 解釋 |
---|---|
string/table | 主題 |
返回值:無(wú)
4.4 發(fā)布數(shù)據(jù)
數(shù)據(jù)的發(fā)布也同MQTT一樣。
云平臺(tái)發(fā)布
cloudc:publish(topic,data,qos,retain)
參數(shù):
傳入值類型 | 解釋 |
---|---|
string/table | 主題 |
string | 消息,必填,但長(zhǎng)度可以是0 |
number | 消息級(jí)別,0/1,默認(rèn)0 |
number | 是否存檔,0/1,默認(rèn)0 |
返回值:無(wú)
4.5 接收數(shù)據(jù)
接收統(tǒng)一使用了"iotcloud"消息進(jìn)行通知,所以我們只需要訂閱此系統(tǒng)消息即可。
?
編輯
4.6 云平臺(tái)關(guān)閉
云平臺(tái)關(guān)閉會(huì)釋放掉內(nèi)存,之后不能再進(jìn)行重接,只能重新新建再連接。
云平臺(tái)關(guān)閉
cloudc:close()
參數(shù):無(wú)
返回值:無(wú)
例子:
iotcloudc:close()
4.7 云平臺(tái)OTA
僅僅如此了么?當(dāng)然不只!
IoT_CLOUD還支持了騰訊云平臺(tái)的OTA功能,可以直接進(jìn)行OTA,且所有流程iotcloud庫(kù)都進(jìn)行了支持,做到了用戶無(wú)感。
用戶在訂閱"iotcloud"消息中會(huì)有iotcloud.OTA事件,此事件即為OTA完成的通知,我們選擇時(shí)間進(jìn)行設(shè)備重啟即可。
**五、效果演示 **
5.1 代碼演示
好了,接下來(lái)我們看下完整代碼和效果,這里以動(dòng)態(tài)注冊(cè)為例。
最新demo源碼下載:
https://gitee.com/openLuat/LuatOS/blob/master/demo/iotcloud/main.lua
?
編輯
5.2 設(shè)備日志
?
編輯
可以看到我們的設(shè)備打印了連接成功,證明自動(dòng)注冊(cè)+連接流程已經(jīng)完成。
5.3 云平臺(tái)效果
?
編輯
可以看到,設(shè)備已經(jīng)自動(dòng)注冊(cè)并且在線。
至此,云平臺(tái)已經(jīng)連接成功。剩下的就是要根據(jù)自己的產(chǎn)品需求,使用自己的模型上報(bào)/下發(fā)數(shù)據(jù)就可以了。
?編輯
?編輯
?
-
嵌入式
+關(guān)注
關(guān)注
5056文章
18960瀏覽量
301749 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2900文章
44009瀏覽量
369929 -
代碼
+關(guān)注
關(guān)注
30文章
4717瀏覽量
68204
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論