控制 Zigbee 网关的子设备

更新时间:2023-06-01 06:18:30下载pdf

本文介绍如何控制网关下的子设备。网关本身也是个设备,如果要控制网关本身,请参考其他文档,例如 设备管理

接入

类名 说明
IThingGateway 网关类,封装了 Zigbee 网关的相关操作,包括控制子设备、查询子设备、监听子设备状态等

初始化网关对象

接口说明

ThingHomeSdk.newGatewayInstance(String devId)

参数说明

参数 说明
devId 网关设备的设备 ID

查询网关的子设备列表

接口说明

void getSubDevList(IThingDataCallback<List<DeviceBean>> callback)

参数说明

该接口的参数为异步回调的 callbackcallback 内容如下:

public interface IThingDataCallback<List<DeviceBean>> {

    void onSuccess(List<DeviceBean> result);

    void onError(String errorCode, String errorMessage);

}

示例代码

ThingHomeSdk.newGatewayInstance(devId).getSubDevList(new IThingDataCallback<List<DeviceBean>>() {
    @Override
    public void onSuccess(List<DeviceBean> list) {
    }

    @Override
    public void onError(String errorCode, String errorMessage) {

    }
});

注册子设备状态变更监听

接口说明

void registerSubDevListener(ISubDevListener listener);

参数说明

参数中的监听器接口内容如下:

public interface ISubDevListener {

    /**
     * 当设备功能状态变更时的通知
     *
     * @param nodeId 子设备 nodeId,子设备 DeviceBean 中的 nodeId 字段
     * @param dpStr 子设备变更的设备功能数据
     */
    void onSubDevDpUpdate(String nodeId, String dpStr);

    /**
     * 设备移除时的通知
     */
    void onSubDevRemoved(String devId);

    /**
     * 新增设备时的通知
     */
    void onSubDevAdded(String devId);

    /**
     * 子设备重命名时的通知
     */
    void onSubDevInfoUpdate(String devId);

    /**
     * 子设备在线 or 离线状态变更通知
     */
    void onSubDevStatusChanged(List<String> onlineNodeIds, List<String> offlineNodeIds);
}

示例代码

ThingHomeSdk.newGatewayInstance(devId).registerSubDevListener(new ISubDevListener() {
    @Override
    public void onSubDevDpUpdate(String nodeId, String dpStr) {

    }

    @Override
    public void onSubDevRemoved(String devId) {

    }

    @Override
    public void onSubDevAdded(String devId) {

    }

    @Override
    public void onSubDevInfoUpdate(String devId) {

    }

    @Override
    public void onSubDevStatusChanged(List<String> onlines, List<String> offlines) {

    }
});

注销子设备状态变更监听

接口说明

void unRegisterSubDevListener();

示例代码

ThingHomeSdk.newGatewayInstance(devId).unRegisterSubDevListener();

控制指定的子设备

接口说明

void publishDps(String nodeId, String dps, IResultCallback callback)

参数说明

参数 说明
nodeId 子设备节点 ID,从子设备的 DeviceBean 中查询
dps 要控制的设备功能列表,格式为 JSON 字符串
callback 发送成功或失败的回调

示例代码

ThingHomeSdk.newGatewayInstance(devId).publishDps(subDeviceBean.getNodeId(), "{\"101\": true}", new IResultCallback() {
    @Override
    public void onError(String code, String error) {

    }

    @Override
    public void onSuccess() {

    }
});

控制指定的子设备群组

接口说明

控制该子设备同一个群组下的所有设备。

void multicastDps(String nodeId, String dps, IResultCallback callback)

参数说明

参数 说明
nodeId 子设备节点 ID,从子设备的 DeviceBean 中查询
dps 要控制的设备功能列表,格式为 JSON 字符串
callback 发送成功或失败的回调

示例代码

ThingHomeSdk.newGatewayInstance(devId).multicastDps(subDeviceBean.getNodeId(), "{\"101\": true}", new IResultCallback() {
    @Override
    public void onError(String code, String error) {

    }

    @Override
    public void onSuccess() {

    }

});

控制网关下所有子设备

接口说明

void broadcastDps(String dps, IResultCallback callback)

参数说明

参数 说明
dps 要控制的设备功能列表,格式为 JSON 字符串
callback 发送成功或失败的回调

示例代码

ThingHomeSdk.newGatewayInstance(devId).broadcastDps("{\"101\": true}", new IResultCallback() {
    @Override
    public void onError(String code, String error) {

    }

    @Override
    public void onSuccess() {

    }

});