# 华为云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)

  1. 准备一台安装有OpenSSL的PC。Linux系统的PC通常自带OpenSSL,推荐使用。
  2. 在命令行窗口中,执行如下命令,生成私钥。

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格式)两个私钥文件。前者用于生成公钥文件;后者用于解密激活码文件。

  1. 继续执行如下命令,生成私钥对应的公钥。

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

解压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。

#认证沙箱操作步骤

  1. 模组侧KitFwk切换release版本。目前git上的SDK已经切换到release版本了。
  2. 模组侧Token需要重新申请调测Token,以前申请的Token都不能再使用了。
  3. Device Partner平台,帐号管理 > 基本资料,申请测试权限,庆科的账户已经设置了,客户账户需要修改。
  4. Device Partner平台,产品开发 > 集成开发 > 管理调测设备,添加设备SN(HalGetSerial()接口。我们SDK默认都是使用的模组的MAC地址的小写生成的SN,类似这种:7c25da002e82

  1. 手机侧安装智慧生活基础服务:更新至HiLinkSvc_Beta_12.0.2.303.apk,切换“新认证环境”。
  2. 手机侧安装智慧生活:更新至AILife_Debug_12.0.2.302.apk,切换“认证沙箱”。
  3. 如果token下载失败,请到产品定义页面,点击编辑再点击提交,触发服务器做一次同步,再申请token。

#FAQ

1、新创建的产品,按照上面修改完程序以后无法搜索到设备,或者搜索到的是未知设备。

解决办法:

  1. 首先检查APP的版本,请使用12.0.0.302版本,环境设置为认证环境。
  2. 到网页后台集成开发页面,点击一次手动PIN码,再点击自动PIN码,只需要来回点2次,不需要其他操作,也不需要提交。
  3. 删除APP缓存,并重启APP。删除APP缓存的方法:Android系统调出所有正在运行的程序列表,长按智慧生活图标,点击存储,删除数据。

2、配网失败

解决办法:请确认token是否下载正确了,一定要使用跟产品匹配的token,并正确烧录到产品的flash中。检查输入的路由器密码是否正确。恢复配网模式多试两次。

更新时间: 2023/11/29 13:52:34