鸿蒙HarmonyOS SDK
设备通信
连接与断开

连接与断开

统一设备对象通过 bleCapabilitylanCapabilitymqttCapability 暴露三种通信通道。只对已安装并初始化的通道发起连接。

BLE 连接

import { GizCapacityStatus } from '@gizwits/smart-sdk';
 
await device.bleCapability.connect(device);
const controllable: boolean =
  device.bleCapability.getStatus() === GizCapacityStatus.ONLINE_CONTROLLABLE;

连接过程会执行 GATT 服务发现和协议鉴权。对同一设备重复调用会复用正在进行或已经成功的连接。

await device.bleCapability.disconnect(device);

如果设备广播仍可见,断开后状态可能回到 ONLINE 而不是 OFFLINE

LAN 连接

await device.lanCapability.connect(device);

目标设备必须已通过局域网发现,且当前网络资料仍然有效。

await device.lanCapability.disconnect(device);

网络切换、Socket 异常或设备超时也会使 LAN capability 离线。

MQTT 自动连接

GizMqttManager.initialize() 会监听登录态和绑定设备列表,为具备云端资料的绑定设备自动建立服务。业务通常只需等待设备达到可控状态:

const unsubscribeCloud = device.mqttCapability.subscribeStatus().subscribe((status): void => {
  // status 为 ONLINE_CONTROLLABLE 后允许云端控制。
});

MQTT 主动连接

仅在需要主动启用单台设备的云端订阅时调用:

import { GizMqttManager } from '@gizwits/smart-sdk-mqtt';
 
await device.mqttCapability.connect(device);
// 等价入口:await GizMqttManager.connectDevice(device);

MQTT 主动断开

await device.mqttCapability.disconnect(device);
// 等价入口:await GizMqttManager.disconnectDevice(device);

断开单台设备不会关闭其他设备共用的 MQTT 服务。页面离开时应取消状态订阅,但是否断开设备由后台控制需求决定。