1. 概述

1.1 什么是三元组和一机一密?

三元组指的是ProductID、Wi-Fi Mac地址和Device Secret。其中,我们又把Wi-Fi Mac地址和Device Secret称之为一机一密,作为激活码,一机一密在设备鉴权和激活时会被使用到。一组Wi-Fi-Mac地址和Device Secret信息对应唯一的一台设备,因此在生产测试过程中,每台设备均需配置不同的Wi-Fi-Mac地址和Device Secret,否则会造成功能异常、时序错乱等问题。
为了满足您的调试需求,平台为每个产品免费提供了一定数量的三元组。您可以在量产前或量产后按需添加。

1.2 前提条件

申请三元组之前,需要确认已在天猫精灵AI平台控制台创建了产品,并完成了产品的设备端开发(即设备端已经可以进行配网测试)。开发阶段和产品量产发布后的操作方法有差异,具体如下所示。

2. 开发阶段

2.1 申请三元组

2.1.1 平台上申请调试设备

登录天猫精灵AI平台控制台,进入产品的开发 - 设备调试 - 添加调试设备页面,然后单击添加调试设备按钮,在弹出的对话框中,配置需要申请的调试设备数量。
image.png

2.1.2 下载三元组文件

单击下载三元组文件,选择刚申请的三元组信息,将其下载到本地。
image.png

2.2 使用三元组

平台上成功申请并下载到三元组之后,我们将其中的一机一密和机型等信息写入到设备端,然后对设备重新配网即可。

2.2.1 设备端配置一机一密

image.png
下载到本地的三元组文件,有Product ID、Device Secret、Mac Lower、Md5、Mac Upper、Bluetooth Mac Lower六列,使用如下规则自行拼接完整命令之后,先写入Wi-Fi Mac地址,再写入Device Secret(设备已集成factory指令,可直接使用)。

  1. wifi mac地址:
  2. factory ATE_SET_WMAC Mac Lower
  3. Device Secret
  4. factory ATE_SET_SECRETKEY_MD5 Device Secret MD5

注意,不同参数之间需要用空格隔开。比如

写wifi mac地址:
factory ATE_SET_WMAC 11:22:33:44:55:66

写Device Secret:
factory ATE_SET_SECRETKEY_MD5 A0itwhDtJcepz4jG0iY3NVzM8Fbocc+MjKWH2++6YVYqSEOfuAaHRZKBLGsEFDF0bMvedEHVpd0+LpfdPaBbMA== 2563577d4b0bc45092620003f5fe025e

写入之后,可以使用下面2个命令回读确认是否写入成功。

读wifi mac地址:
factory ATE_GET_WMAC

读Device Secret:
factory ATE_GET_SECRETKEY

注意:设备量产时,还需要写入蓝牙mac地址。调试阶段如果涉及蓝牙功能,也应写入蓝牙mac地址。命令如下:

factory ATE_SET_BT_MAC (Bluetooth Mac Lower)

2.2.2 设备端配置机型信息

由于不同产品的三元组互不通用,因此平台上申请的三元组必须与当前产品机型信息配合使用。机型信息由BizGroup和BizType组成,每个产品互不相同,可以在平台产品的开发页面找到。
image.png
设备端写入机型信息的指令如下所示:

写BizGroup:
factory ATE_SET_KV_COMMON bizGroup <BizGroup>

写BizType:
factory ATE_SET_KV_COMMON bizType <BizGroup>

注意,不同参数之间需要用空格隔开。比如

写BizGroup:
factory ATE_SET_KV_COMMON bizGroup TGChip6000A

写BizType:
factory ATE_SET_KV_COMMON bizType AILABS

机型信息写入之后,可以使用下面2个命令回读确认是否写入成功。

读BizGroup:
factory ATE_GET_KV_COMMON bizGroup

读BizType:
factory ATE_GET_KV_COMMON bizType

2.2.3 设备重新配网

一机一密和机型信息写入之后,设备重启生效。生效之后,设备重新进入配网模式,使用天猫精灵APP(或者集成了天猫精灵配网SDK的自有APP)正常配网即可。

2.3 注意事项(必读!!!)

2.3.1 三元组的有效性

不同开发方案的三元组互不通用,不同产品的三元组互不通用。所以平台上创建的产品,如果中途修改了开发方案,比如从木星标准模组Pro2修改为了语音芯片TG6000A(SDK版),那么需要重新申请调试设备,重新下载三元组,设备上写入新申请的一机一密,然后设备才能配网成功。

2.3.2 串口工具的配置

如下图所示,如果串口工具使用的是minicom,请在执行所有指令前勾选加回车换行选项,否则指令无法指令。其它串口工具参考设置接口。
image.png

2.4 常见配网失败问题排查

2.4.1 设备接收不到密码

如果APP开始配网后,设备一直没有播报“收到密码,正在连接网络”提示音,说明设备一直收不到配网信息,此时需要确认设备是否进入配网模式,如果设备端操作确认无误,则需检查下手机端或者路由器(更换手机、重启APP、更换路由器等尝试)。

2.4.2 输入的wifi密码不对

如果配网时,APP端输入的密码不对,设备会有密码错误的相关提示音播报。可在设备串口日志中查找关键词:onHandler, ssid来查看设备端收到的配网信息来确认问题。

[Jan 01 08:00:45.396]<D>[AINetConfig]<NetConfigSDK>AINetConfig.cpp:onHandler:443 onHandler, ssid:hahaha psk:12345678. userId:1326268801229930495 authCode:FlOmZH

2.4.3 服务器连接失败

如果配网时,设备播报“收到密码,正在连接网络”提示音之后,过了一会儿又播报了“服务器连接失败。。。”提示音,APP显示配网失败,则说明设备与云端鉴权失败。这种情况请先排查网络是否正常,如果更换多个网络后问题依旧,那么一般就是一机一密或者机型信息配置不对导致的了,此时可在设备串口日志中查找关键词:use ree uuid =,查看UUID是否正常。

正常的UUID:
[Jan 01 08:00:01.679]<D>[SecureStorage]<smartbox>one_device_one_key.cpp:ui_get_uuid_odok:326 not 8167 platform,use ree uuid = C2F6DC94B9B977501F02667C00000000 len = 32

异常的UUID:
[Jan 01 08:00:02.983]<D>[SecureStorage]<smartbox>one_device_one_key.cpp:ui_get_uuid_odok:326 not 8167 platform,use ree uuid = 烝f?餍^t撹恢懐xS>?栭;櫔揶搐 len = 32

2.4.3.1 一机一密有误

正常情况下,UUID是一个长度为32的字串。如果UUID显示乱码,说明设备端的三元组解密秘钥无法解密Device Secret。请找阿里确认平台创建产品时所选的开发方案与当前使用的模组(或者芯片模式)是否匹配。

2.4.3.2 机型信息有误

正常情况下,UUID是一个长度为32的字串。如果UUID显示正常,说明设备端没有写入正确的机型信息。请参考《2.4设备端配置机型信息》一节进行确认。

2.5 对不起,我不明白你的意思

如果平台新创建的产品按上述步骤首次配网成功后,尝试基本功能(如:天气,新闻,音乐、闹钟等)都提示“对不起,我不明白你的意思”,说明是该产品没有添加“设备控制”技能,按平台添加语音技能文档添加即可。
如下图所示,在产品的运营 - 语音技能 - 通用模式/儿童模式 - 语音技能页面,如果能搜索到“设备控制”技能,则说明添加成功。然后在设备端重试即可。
image.png
如果配置成功之后还有问题,请联系@何卓(wb-hz890322)排查。

3. 量产发布后

产品量产发布后,如果还需要调试,您可以将量产后的设备作为调试设备来使用。登录天猫精灵AI平台控制台,进入产品的开发 - 设备调试 - 添加调试设备页面,然后单击添加调试设备按钮,在弹出的对话框中,填写量产后设备的MAC地址。image.png
说明:仅量产后添加的调试设备可以删除。删除后,该设备恢复为普通设备。

更多信息,请参考平台文档:https://www.aligenie.com/docs/ai/2998610