开发环境: 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、产品上线
待续。。。。。。。。。