所谓的设备绑定,就是设备可以用户的 QQ 号或微信号建立起绑定关系,类似QQ 好友或微信好友。目的是为了让设备具备用户身份,用来支持小微提供的各种功能。
小微平台提供两位形式的App端管理方式:小微自有App--腾讯云小微和设备生产商自有App。其中,下文会对小微自有App--腾讯云小微的绑定进行详细说明;设备生产商自有App的接入,请参考文档第三方App绑定。
使用腾讯云小微硬件平台 SDK 的智能设备在第一次使用之前要先跟小微 App 完成绑定,这个步骤只需要进行一次,绑定成功之后,您就可以在小微 App 中设备列表页面中找到它了。用户可以在小微 App 中进行查看和管理设备的在线状态、昵称、位置信息等信息。
如上图所示,小微 App 支持二维码扫描的方式进行设备绑定。根据智能设备的配网方式,设备绑定会出现两种不同的情况:
-
自行入网:对于这类设备,小微 App 会直接进入绑定流程,因为该类设备的网络用户可以直接操作进行配置,设置无需配置;
-
声波配网:对于声波配网设备,小微 App 首先会对设备的网络进行配置,联网成功后才会进入绑定流程。
说明:关于设备配网的概念和具体流程,请参考设备配网。
上一节中我们提到设备绑定的时候需要扫描一个二维码来绑定设备,所以这一节我们将详细讲述一下这个二维码。
用户绑定设备需要通过小微 App 扫描一个二维码,我们通过解析并校验二维码中的信息,引导用户在小微 App 中完成设备的绑定。
二维码中实际包含的信息是一个网址 URL,之所以是网址,是因为当其它APP扫描了这个二维码时,我们需要给用户一些温馨提示,并且引到用户登录小微 App 完成绑定过程,而如果扫描这个二维码的本身就是小微 App,则它会甄别这个格式,并且直接进入绑定流程相关的逻辑。
根据配网方式的不同,二维码的格式一共有两种:
-
自行入网设备的 URL 格式:https://xiaowei.tencent.com/device/bind?pid={$pid}&sn={$sn}&token={$token}。
-
声波配网设备的 URL 格式:https://xiaowei.tencent.com/device/qrcode?pid={$pid}
开发者需要将其中 pid、sn 和 token 等参数,替换为目标设备的实际值。
pid: Product ID,产品ID
每一个型号的产品的唯一 ID。不同型号的产品,应当在配置平台中申请注册不同的 pid,以便能够准确区分出不同的型号或系列。但 pid 不是用来标识每台设备的唯一标识。
sn:Serial Number,序列号
每台设备都应该有一个唯一的序列号,序列号并不需要腾讯后台分配,所以您可以直接对接原有产品线的序列号系统,但是我们对序列号格式有严格要求:长度必须是16个字符的字母、数字、下划线、连词符或者冒号的组合,例如ABC-0032-1234567
就是一个非常标准的序列号。
token: 设备token
对于自行入网的设备,出于安全考虑,我们需要设置 token 参数,它的内容为设备 License 的 MD5 值。
对于第一种格式的二维码,SDK 提供相关接口用于获取这种格式的 URL (我们也可以自行填入相应的参数拼接相应的 URL)。有屏幕的设备可根据这个 URL 生成二维码显示在屏幕上。
Linux SDK
/**
* 生成二维码 URL (根据 init 时传入的 pid、sn和license生成)
*
* @param 缓冲区
* @param 缓冲区长度
* @return 调用是否成功
*/
bool getQRCodeUrl(char *pUrlBuf, int bufSize);
Android SDK
/**
* 生成二维码 URL (根据 init 时传入的 pid、sn和license生成)
*
* @return 二维码 URL
*/
public static String getQRCodeUrl();
除此之外,我们可使用任意二维码生成器编译。例如,使用在线二维码生成器:http://www.cli.im/,将上面得到的 URL 进行编译,即可获得二维码图片。
很多采用二维码接入的合作方经常反馈一些不太理解的错误提示,最终定位的结论都是设备端代码中的 sn 和 pid 跟二维码中所包含的信息不一致,这种信息不一致100%的会导致在绑定过程中的某一个环节发生一些严重错误。