天猫-阿里云IoT平台接入开发记录

 
开发环境:
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介绍

https://help.aliyun.com/document_detail/143848.html?spm=a2c4g.11186623.2.23.1b4c2adaLRTn8F#task-2338021

6、错误码字典

https://help.aliyun.com/document_detail/127995.html?spm=5176.11065259.1996646101.searchclickresult.3b1d3682Hnhydl

注:错误码更新不及时,有些遇到的错误码这里并没有。

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、网络接入(配网)

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();

:配网完成,释放 aws_info 对象导致出现段错误!

3、连云

设备连上网络后,在云端完成设备注册,app 端才最终提示配网完成,然后 app 上才显示自己的设备。

SDK 的 examples 目录下有几种支持的连云方式,如下:

但是,比较坑的是,有的只有连云功能(如mqtt),不具备设备注册功能。这就是说,配网过程设备连上网后,调用只有连云功能的示例是无法完成配网的!

这里,linkkit 既有设备注册功能,又有连云功能,一切正常。

4、设备功能开发及和 app 插件端联调

略。

5、OTA 功能开发

.gitkeep

6、产品上线

待续。。。。。。。。。

原文地址:https://www.cnblogs.com/rockyching2009/p/13048358.html