開發環境: 1、IoT 設備端開發 2、設備基於於 Linux 平台 3、無 AliOS Things 的 SDK
一、開發資料
1、SDK下載及介紹
https://help.aliyun.com/document_detail/135278.html?spm=a2c4g.11186623.6.645.b04b7e70qmGKql
2、關鍵參數
- PK: ProductKey, 設備品類標識字符串,
- PS: ProductSecret, 設備品類密鑰
- DN:DeviceName, 某台設備的標識字符串
- DS: DeviceSecret, 某台設備的設備密鑰
詳細介紹:https://help.aliyun.com/document_detail/96627.html?spm=a2c4g.11186623.6.606.5c0770dfcOzuUM
參數來源:https://help.aliyun.com/document_detail/115433.html?spm=a2c4g.11186623.6.548.5c0770df3Mcz3T
3、配網功能
WiFi配網概述:https://help.aliyun.com/document_detail/97570.html?spm=a2c4g.11186623.6.623.5c0770df4gHKr7
設備熱點配網:https://help.aliyun.com/document_detail/111048.html?spm=a2c4g.11186623.6.598.284c8d7fMGnCla
一鍵配網問題排查:https://help.aliyun.com/document_detail/128598.html?spm=a2c4g.11186623.4.3.2b164e10ux8Q0G
零配問題排查:https://help.aliyun.com/document_detail/128649.html?spm=a2c4g.11186623.6.751.49ee42aaXJP70p
4、Wi-Fi設備接入LP
設備端/雲端/APP接入開發介紹:https://help.aliyun.com/document_detail/115433.html?spm=a2c4g.11186623.6.548.5c0770df3Mcz3T
5、公版App介紹
6、錯誤碼字典
注:錯誤碼更新不及時,有些遇到的錯誤碼這里並沒有。
7、SDK不同語言或平台功能匯總
https://help.aliyun.com/document_detail/100576.html?spm=a2c4g.11186623.6.543.5c0770dfFFKyQm
Opps 1:飛燕、啟明星、阿里物聯、生活智能、天貓精靈app、公版app......整的真亂!
Opps 2:統一平台后,又強制阿里賬號和天貓賬號關聯;關聯后登錄,要阿里平台登一次,天貓賬號登一次,完了還要短信驗證碼,那個費勁吶。。。
二、開發過程
1、SDK 獲取
運行在 Linux 系統,需要下載不帶 AliOS 的 SDK:
生活物聯網平台SDK(V1.3.0) 或 git clone git@code.aliyun.com:living_platform/ali-smartliving-device-sdk-c.git -b rel_1.3.0
2、網絡接入(配網)
准備:設備,天貓精靈app(app store下載)
1.1 AP配網實現細節
- 設備作為 CoAP Server,監聽 UDP 5683 端口
- 天貓精靈App不支持AP配網!!!
1.2 一鍵配網實現細節
- 解析 802.11 幀包,涉及數據幀/管理幀
- 網卡需支持混雜模式(也叫monitor模式)
- Linux 平台需要網卡 firmware 和 驅動支持
1.3 一鍵配網開發流程
1.3.1 在雲平台創建產品
1.3.2 創建調試設備,進而獲取 ProductKey、ProductSecret、DeviceName、DeviceSecret 參數
注1:ProductKey/ProductSecret 參數和產品綁定的,即對於創建的同一個產品,這對參數固定;DeviceName/DeviceSecret 參數和具體設備綁定,即“一機一碼”
注2:配網信息解密涉及這些參數,若有誤,將因解密配網數據失敗而無法完成配網
1.3.3 從雲平台下載配網二維碼
1.3.4 設備端一鍵配網 SDK 使用:
首先,需要根據自己的硬件平台適配一鍵配網鈎子函數,主要的有:
- HAL_Awss_Switch_Channel:信道切換
- HAL_Awss_Open_Monitor:開啟網卡混雜模式(監聽模式)
- awss_recv_80211_frame_cb_t:網卡接收 802.11 的數據包,並調用其對802.11幀進行處理
- HAL_Awss_Close_Monitor:關閉網卡混雜模式(監聽模式)
1、設置參數 HAL_SetProductKey(config.product_key); HAL_SetProductSecret(config.product_secret); HAL_SetDeviceName(config.device_name); HAL_SetDeviceSecret(config.device_secret); 2、注冊事件回調函數 // 注冊配網事件回調一定要需在awss_start之前調用 iotx_event_regist_cb(linkkit_event_handler); 3、使能一鍵配網 awss_config_press(); 4、進入配網流程 awss_start();
其次,實現所需鈎子函數,並在合適的時機調用之。
這部分關鍵是要保證 HAL_Awss_Switch_Channel 信道切換和接收 802.11 的數據幀的正確性。
注:配網完成,釋放 aws_info 對象導致出現段錯誤!
3、連雲
設備連上網絡后,在雲端完成設備注冊,app 端才最終提示配網完成,然后 app 上才顯示自己的設備。
SDK 的 examples 目錄下有幾種支持的連雲方式,如下:
但是,比較坑的是,有的只有連雲功能(如mqtt),不具備設備注冊功能。這就是說,配網過程設備連上網后,調用只有連雲功能的示例是無法完成配網的!
這里,linkkit 既有設備注冊功能,又有連雲功能,一切正常。
4、設備功能開發及和 app 插件端聯調
略。
5、OTA 功能開發
設備端開發:用高級版接口實現的OTA例程
固件上傳雲端:操作步驟
https://help.aliyun.com/document_detail/131448.html?spm=a2c4g.11174283.2.24.2d1971327LUS5W
6、產品上線
待續。。。。。。。。。