# 华为云YAT产品接入流程
鸿蒙后台网址:https://devicepartner.huawei.com/console/home (opens new window)
#创建产品
选择左侧导航栏的产品开发,点击加号创建新产品,或者选择以前创建的产品编辑查看已经创建的产品。
选择品类,点击下一步。
选择方案:标准开发方案,下一步。
输入产品基本信息:注意这一步很重要,填写确认以后就不能修改了,所以一定要填写正确。产品名称会在配网时发现新设备提示出来,连接方式和通信类型请按照下图选择,最后点击创建。
输入联系人信息:
产品创建成功以后会分配ProdID、ProdKey等信息,后面会用到。
产品定义:操作系统设置请参考下图。
使用庆科的EMW3010模组请选择标准开发方案,参考下面的选择。
使用庆科EMC3090模组请选择自定义开发方案,并按照下图选择模组:
填写完产品信息以后点击提交,进入交互设计页面。
交互设计:点击进入开发
物模型定义:点击新建品类功能,按需添加需要的功能。
选择完品类功能以后点击确定,回到上个页面,点击下一步,进入APP开发页面。APP开发选择线上开发,等待后台生成H5页面,按需配置页面。页面配置完成以后点击下一步,进入产品配置。按需做产品配置。
产品配置完成以后,点击左上角的产品型号,进入上一级页面。
点击集成开发,进入集成开发页面。
配网设置:
点击修改,配置正确的SSID,这个SSID是配网模式下,模组启动的热点名称,这个配置非常重要,鸿蒙会基于SSID来判断是哪个产品。
按照上图设置完SSID以后点击保存。
选择开启PIN码验证,然后先点击手动PIN码,再点击自动PIN码。
剩余项目请参考下图填写,然后点击提交完成产品的所有配置。
在产品的信息页面中,三个关键信息:ProdID,产品型号和ProdKey的配置需要修改到代码中。
#产品信息导出
点击图中红色圈出的地方的导出按钮,浏览器会下载一个json文件,是产品的基本信息,内容举例如下:
{
"acKey":"xxxxxxxxxxxxxxxxxx",
"accessType":"HARD",
"brand":"庆科",
"brandEn":"MXCHIP",
"desc":"firmwareVer:固件软件版本号; softwareVer:SDK版本号; hardwareVer:设备硬件版本号",
"deviceModel":"Light3010",
"deviceName":"庆科3010测试灯",
"deviceTypeId":"01B",
"deviceTypeName":"智能照明",
"deviceTypeNameEn":"Lamp",
"firmwareVer":null,
"hardwareVer":"1.0.0",
"manufacturerId":"01A",
"manufacturerName":"上海庆科信息技术有限公司",
"manufacturerNameEn":"mxchip",
"prodId":"258X",
"productSeries":"Light",
"protocolType":"WIFI",
"softwareVer":"12.0.0.304"
}
#代码修改
#hal_token.c
把复制的ProdID和ProdKey填写到SDK的如下函数中。
#hal_sys_param.c
需要修改关于产品的定义,类似如下内容:
#hilink的修改
hilink_device_sdk.c 修改A_C数组,参考上面导出的产品信息的acKey。
hilink_device.h的修改请参考导出的产品信息填写。
宏定义 | JSON值 |
PRODUCT_ID | prodId |
DEVICE_TYPE | deviceTypeId |
MANUAFACTURER | manufactureNameEn |
DEVICE_MODEL | deviceModel |
DEVICE_TYPE_NAME | deviceTypeNameEn |
MANUAFACTURER_NAME | manufacturerNameEn |
所以根据我导出的产品信息,hilink_device.h的宏定义修改如下:
/* 设备基本信息 */
#define PRODUCT_ID "258X"
#define DEVICE_TYPE "01B"
#define MANUAFACTURER "01A"
#define DEVICE_MODEL "Light3010"
/* 请确保设备类型英文名和厂商英文名长度之和不超过17字节 */
#define DEVICE_TYPE_NAME "Lamp"
#define MANUAFACTURER_NAME "mxchip"
#再次检查配网设置:
点击修改,配置正确的SSID,这个SSID是配网模式下,模组启动的热点名称,这个配置非常重要,鸿蒙会基于SSID来判断是哪个产品。
#产品控制代码修改
#下载profile
在产品后台下载产品的profile,这个profile定义了控制产品的命令列表。在产品主界面,点击交互设计->进入开发。
在交互设计的右上角点击下载Profile,会下载一个excel文件:Profile_<ProdID>.xlsx文件。
#根据Profile修改代码
打开Profile文件,找到设备属性表,根据表的内容修改hilink_device_sdk.c文件。
上面是一个demo的Profile的内容,下面是c文件修改的内容。
// 设备服务信息
int gSvcNum = 1;
svc_info_t gSvcInfo[] =
{
{"switch", "switch"},
};
// 设备服务的总数量
#define SRV_TOTAL_COUNT 1
// 服务switch定义
#define SWITCH_PROP_COUNT 1
#define SWITCH_ON_IDX 0
const SRV_PROPERTY_S switch_props[SWITCH_PROP_COUNT] = {
{ "on", DTYPE_BOOL, OPR_GET | OPR_PUT | OPR_REPORT }
};
// 设备服务总列表
const SRV_INFO_S services[SRV_TOTAL_COUNT] = {
{"switch", "switch", SWITCH_PROP_COUNT, switch_props},
};
gSvcNum的数量要是这个页面本身包含的服务sid的数量去掉默认的两个服务(update和netInfo)以后的值。
gSvcInfo是所有这些服务的说明,其中第一个字符串是sid的内容,第二个字符串是ServiceType的内容。
switch_props定义操作属性,第一个字符串对应表格的属性,第二个对应数据类型,第三个对应操作权限。一个服务器sid下面如果有多少个操作属性就需要定义多少个数组。
services数组定义所有的服务sid。
#注意
在创建产品的集成开发那个页面,要选择开启PIN码校验,然后一定要先点击一次手动PIN码,再点击自动PIN码,不能只点击自动PIN码。
#设备授权
点击左侧导航栏,选择设备授权。
点击ACKey下载,获取ACKey并填写到SDK中。
hal_token.c
hilink_device_sdk.c
#申请激活码
激活码公钥生成方式:参考链接:生成私钥与公钥 (opens new window)
- 准备一台安装有OpenSSL的PC。Linux系统的PC通常自带OpenSSL,推荐使用。
- 在命令行窗口中,执行如下命令,生成私钥。
openssl genrsa -out rsa_private_key.pem 1024
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt >> privatekey.txt
命令执行成功后,得到“rsa_private_key.pem”(标准格式)和“privatekey.txt”(pkcs8格式)两个私钥文件。前者用于生成公钥文件;后者用于解密激活码文件。
- 继续执行如下命令,生成私钥对应的公钥。
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
命令执行成功后,得到“rsa_public_key.pem”文件。用文件编辑器打开该文件,拷贝公钥信息(不要拷贝第一行和最后一行,亦即“BEGIN PUBLIC KEY”、“END PUBLIC KEY”所在的两行信息),以备后续申请激活码 (opens new window)使用。
#激活码解密
从华为官网下载下来的激活码文件是一个*.lic文件这个文件是加密的,需要通过工具解密。📎token_解密工具(Java版).rar
运行如下命令解密
java -jar decode.jar MXCHIP_TEST01_00120210611.lic authorized.zip privatekey.txt
其中privatekey.txt就是上面产生public_key时创建的文件,decode.jar就是压缩包里面的文件,lic文件就是官网下载的授权的加密文件,authorized.zip就是产生的解密后的token文件,每一行代表一个token。
#转换为token.bin文件
解压token_parse.zip文件,解压出authorized.zip文件,在CMD执行命令:
token_parse.exe 00f778c3-0b22-41ea-9cf2-72693b74c3b2.txt
则会把txt里面的所有token产生成独立的bin文件,假设申请了100个token,则会产生100个bin文件。
#token烧录
大批量生产请使用MXCHIP的BAT烧录系统。
研发人员可以通过原厂工具把上面生成的token.bin文件烧录。EMC3090请使用imagetool,烧录地址是0x1F9000. EMW301请使用hiBurn,烧录地址0x1E3000。
#认证沙箱操作步骤
- 模组侧KitFwk切换release版本。目前git上的SDK已经切换到release版本了。
- 模组侧Token需要重新申请调测Token,以前申请的Token都不能再使用了。
- Device Partner平台,帐号管理 > 基本资料,申请测试权限,庆科的账户已经设置了,客户账户需要修改。
- Device Partner平台,产品开发 > 集成开发 > 管理调测设备,添加设备SN(HalGetSerial()接口。我们SDK默认都是使用的模组的MAC地址的小写生成的SN,类似这种:7c25da002e82。
- 手机侧安装
智慧生活基础服务
:更新至HiLinkSvc_Beta_12.0.2.303.apk,切换“新认证环境”。 - 手机侧安装智慧生活:更新至AILife_Debug_12.0.2.302.apk,切换“认证沙箱”。
- 如果token下载失败,请到产品定义页面,点击编辑再点击提交,触发服务器做一次同步,再申请token。
#FAQ
1、新创建的产品,按照上面修改完程序以后无法搜索到设备,或者搜索到的是未知设备。
解决办法:
- 首先检查APP的版本,请使用12.0.0.302版本,环境设置为认证环境。
- 到网页后台集成开发页面,点击一次手动PIN码,再点击自动PIN码,只需要来回点2次,不需要其他操作,也不需要提交。
- 删除APP缓存,并重启APP。删除APP缓存的方法:Android系统调出所有正在运行的程序列表,长按智慧生活图标,点击存储,删除数据。
2、配网失败
解决办法:请确认token是否下载正确了,一定要使用跟产品匹配的token,并正确烧录到产品的flash中。检查输入的路由器密码是否正确。恢复配网模式多试两次。