簡介
我在本文簡單講述了利用LuatOS-Air進行二次開發,采用一型一密、一機一密兩種方式認證方式連接阿里云。
整體結構如圖
一、準備工作
2.PC電腦,串口工具
3.準備設備證書及產品證書 注意:下方證書信息僅為本教程使用,用戶需要使用自己的證書信息
-設備證書 { "ProductKey": "k1hipglLdjU", "DeviceName": "868488076506128", "DeviceSecret": "fef32adf6dad46c2c7cbf335d3a7b021" } --產品證書 { "ProductSecret": "8LQwOYSZMwp3DFBd", "ProductKey": "k1hipglLdjU" } --公共實例ID { "InstanceId":"iot-06z00ipoepm2g97" }
阿里云介紹
物聯網平臺提供安全可靠的設備連接通信能力,支持設備數據采集上云,規則引擎流轉數據和云端數據下發設備端。此外,也提供方便快捷的設備管理能力,支持物模型定義,數據結構化存儲,和遠程調試、監控、運維。阿里云物聯網平臺為設備提供安全可靠的連接通信能力,向下連接海量設備,支撐設備數據采集上云;向上提供云端API,服務端通過調用云端API將指令下發至設備端,實現遠程控制。物聯網平臺消息通信流程圖如下。
二、API說明
API接口 | 功能描述 |
---|---|
aLiYun.setup() | 配置阿里云物聯網套件的產品信息和設備信息 |
aLiYun.setRegion() | 設置地域region id |
aLiYun.setConnectMode() | 設置連接方式 |
aLiYun.subscribe() | 訂閱主題 |
aLiYun.publish() | 發布一條消息 |
三、實現流程
注冊接入服務器結果回調函數
在收到true時表示連接成功,本demo中去發布一條QOS為1的消息給阿里云。
設置地域
配置為在阿里云創建項目時所用地區。每個地域完全獨立。每個可用區完全隔離,但同一個地域內的可用區之間使用低時延鏈路相連。地域和可用區之間的關系如下圖所示。
四、阿里云操作
產品操作
打開阿里云平臺(找到物聯網平臺,開通業務后進入控制臺。
點開設備管理的產品頁面,點擊新建產品。根據需求和圖示說明創建產品。
設備操作
創建產品完成后就可以進入設備頁面添加設備,在對應產品頁面進入設備管理,按照提示添加設備
(在做正式產品時建議使用imei為devicename,方便后期維護)
阿里云設備創建
五、連接阿里云
LuatOS-Air方式連接概述
LuatOS-Air連接相比AT更為簡單,只需要簡單的配置即可連接,還可以靈活的對數據進行處理。需要從官網或者github下載aliyun的腳本包,或者使用luatoolsv2會自動下載腳本資源,在工具根目錄的\Luatools\resource\soc_script\v2024.06.25.16\demo\aliyun中腳本資源會隨官網同步更新,具體版本可能和本文不同,不過功能都是一致的。
一機一密LuatOS-Air方式連接
一機一密需要提前按照文檔中阿里云操作章節事先建好產品并添加設備。
然后找到所使用的腳本版本進入demo目錄找到aliyun文件夾打開main.lua,根據下方圖示打開這三行的require(如果有被注釋掉,將注釋去掉),并將其他不相關的注釋掉。
接著打開testYjym.lua,根據后面的操作修改三元組信息(DeviceName、ProductKey、DeviceSecret)和InstanceId信息。
首先將testYjym.lua中的三元組信息(DeviceName、ProductKey、DeviceSecret)修改為自己項目中的三元組信息。通過下方圖示可找到自己項目中的三元組信息。
然后在實例詳情頁面,找到實例id并將其填寫到代碼中對應位置。
最后將代碼保存,通過Luatools軟件將固件+腳本燒錄進設備后,便能連接上阿里云了。
這是燒錄教程。
一型一密LuatOS-Air方式連接(公共實例)
除了需要添加產品和設備外還需要在阿里云平臺中打開對應產品的動態注冊開關
先找到所使用的腳本版本進入demo目錄找到aliyun文件夾打開main.lua,根據下方圖示打開這兩行的require(如果有被注釋掉,將注釋去掉),并將其他不相關的注釋掉。
接著打開testYxym.lua,根據后面的操作修改DeviceName、ProductKey、ProductSecret和InstanceId信息。
其中DeviceName、ProductKey和InstanceId信息的位置在一機一密LuatOS-Air方式連接中已指出。下圖為ProductSecret信息的位置。
接著將DeviceName、ProductKey、ProductSecret和InstanceId信息填寫到testYxym.lua中對應位置。
最后將代碼保存,通過Luatools軟件將固件+腳本燒錄進設備后,便能連接上阿里云了。這是燒錄教程。 注意:第一次使用一型一密時,設備要處于未激活狀態。
六、發布與訂閱消息
發布消息
發布消息使用的是**aliyun.publish(topic,qos,payload,cbFnc,cbPara)**這個API。
傳入值類型 | 釋義 |
---|---|
string | UTF8編碼的主題 |
number | qos質量等級,0/1,默認0 |
string | payload 負載內容,UTF8編碼 |
function | cbFnc 消息發布結果的回調函數,回調函數的調用形式為:cbFnc(result,cbPara)。result為true表示發布成功,false或者nil表示訂閱失敗;cbPara為本接口中的第5個參數 |
param | cbPara 消息發布結果回調函數的回調參數 |
return | nil |
--發布一條QOS為1的消息 function publishTest() --注意:在此處自己去控制payload的內容編碼,aLiYun庫中不會對payload的內容做任何編碼轉換 -- aliyun.publish(topic,qos,payload,cbFnc,cbPara) log.info("aliyun", "上行數據") aliyun.publish("/"..aliyun.opts.ProductKey.."/"..aliyun.opts.DeviceName.."/user/update",1,"LUATOS_CESHI",publishTestCb,"publishTest_"..publishCnt) end
訂閱消息
訂閱使用的是aLiYun.subscribe(topic, qos)
傳入值類型 | 釋義 |
---|---|
string | 主題內容為UTF8編碼 |
param | qos為number類型(0/1,默認1) |
return | nil |
以下代碼為訂閱的操作,用戶可根據自己的項目需要訂閱主題。
--- 連接結果的處理函數 -- @bool result,連接結果,true表示連接成功,false或者nil表示連接失敗 local function connectCbFnc(result) log.info("aliyun","連接結果", result) if result then sys.publish("aliyun_ready") log.info("aliyun", "連接成功") --訂閱主題 --根據自己的項目需要訂閱主題 -- aliyun.subscribe(topic,qos) -- aliyun.subscribe("/".. aliyun.opts.ProductKey.."/".. aliyun.opts.DeviceName.."/user/ceshi",1) --PUBLISH消息測試 publishTest() else log.warn("aliyun", "連接失敗") end end
七、OTA升級
- 建立項目并接入阿里云
- 制作差分升級文件包 生成差分包詳細步驟(https://doc.openluat.com/wiki/37?wiki_page_id=4578#__132)
- 阿里云平臺上傳差分包
4.升級包驗證
5.平臺查看升級結果
總結
通過上面的步驟,現在的你應該能夠成功使用LuatOS將合宙Air780EP模塊連接到阿里云IoT平臺了吧。
這不僅為您的物聯網項目提供了強大的云端支持,也為后續的數據處理、遠程控制等功能奠定了堅實的基礎。
希望本文的詳細指導能夠幫助您順利解決連接問題,讓您的物聯網項目更加順暢地運行。
合宙支持LuatOS開發的模組型號,除本文介紹的Air780EP外, 還有Air780EPA、Air780E、Air780EX、Air201、Air780EPT、Air780EPS等型號, 本文介紹的接入阿里云的流程,同樣也適用于這些型號。
-
嵌入式
+關注
關注
5031文章
18686瀏覽量
296429 -
物聯網
+關注
關注
2893文章
42909瀏覽量
364480 -
硬件開發
+關注
關注
3文章
133瀏覽量
24004 -
阿里云
+關注
關注
3文章
915瀏覽量
42744
發布評論請先 登錄
相關推薦
評論