配网
要添加 RainMaker 设备,首先需要定位可发现的设备,然后提供必要的网络凭证,设备会自动与当前已登录的用户关联。
要让以下方法生效,需要配网适配器。了解更多。
配网流程概览
下图展示了完整的设备配网流程:
步骤 1:查找可用设备
配网的第一步是发现并定位可进行配网的设备。
搜索可发现的设备
使用传输类型和设备前缀来搜索可发现的设备。在 userInstance 上调用 searchESPDevices 方法,传入所需的 devicePrefix 和 transport type。
如果提供了配网适配器,该方法会返回可用设备列表。
try {
const response = await userInstance.searchESPDevices(
devicePrefix,
ESPTransport.ble
);
console.log("RainMaker BLE devices fetched:", response);
} catch (error) {
console.error("Error scanning RainMaker BLE devices:", error);
}
搜索 ESP 设备的参数
| 参数 | 类型 | 说明 |
|---|---|---|
| devicePrefix* | 字符串 | 要搜索的设备前缀。 |
| transport* | ESPTransport | 用于搜索的传输类型。可选 ble 和 softap。 |
创建 ESPDevice 实例
在从搜索结果中找到并选择设备之后,创建一个 ESPDevice 实例。该实例提供配网流程所需的全部设备相关方法。
可以在 iOS 和 Android 平台上使用 ESPProvision 适配器创建 RainMaker 设备。创建设备所需的信息可从 RainMaker 设备日志中的二维码获取。
使用 userInstance 的 createESPDevice 方法创建一个 ESP 设备:
try {
const device = await userInstance.createESPDevice(
name,
transport,
securityValue,
pop
);
console.log("RainMaker device created:", device);
} catch (error) {
console.error("Error in device creation:", error);
}
要了解 ESPDevice 的全部方法和属性,请参阅 ESPDevice API 文档。
创建 ESP 设备的参数
| 参数 | 类型 | 说明 |
|---|---|---|
| name* | 字符串 | 要创建的 ESP 设备名称。 |
| transport* | ESPTransport | 设备的传输类型。可选 ble 和 softap。 |
| securityValue | ESPSecurity | 设备的安全类型。可选 unsecure、secure、secure2。 |
| pop | 字符串 | 在安全关联设备时需要的持有证明值。 |
步骤 2:与 ESP 设备建立连接
创建好 ESPDevice 实例后,使用 BLE 或 SoftAP 传输与设备建立连接。该连接是配网过程中与设备通信所必需的。
连接到设备
使用 connect 方法连接到设备:
try {
const response = await device.connect();
console.log("Connected to device", response);
} catch (error) {
console.error("Error while connecting to device", error);
}
获取设备能力
成功连接设备后,获取设备能力以检查是否需要设置 POP(持有证明)或用户名。
ESPDevice 实例的 getDeviceCapabilities 方法会返回一个包含设备能力的字符串数组。
try {
const response = await device.getDeviceCapabilities();
console.log("Device capabilities", response);
} catch (error) {
console.error("Error fetching device capabilities", error);
}
设置持有证明(如需)
当应用希望与设备建立安全连接进行数据通信时,需要执行此步骤。当设备的安全类型为 secure(1)或 secure2(2)时需要该方法。
try {
const connectStatus = await device.setProofOfPossession(pop);
console.log("Proof of Possession set successfully:", connectStatus);
} catch (error) {
console.error("Error setting Proof of Possession:", error);
}
ESPDevice 实例的 setProofOfPossession 方法会返回一个布尔值,指示 POP 是否设置成功。