设备控制

更新时间:2023-05-25 06:23:53

涂鸦智能设备通过设备功能(DP,Data Point)来控制设备,并且通过标准化的 DP 实现设备与 App 之间的交互。

智能生活 App SDK 以 DP Code 为唯一标识,而设备以 DP ID 为唯一标识。所以,请在涂鸦 IoT 开发平台上创建自定义 DP 时,确保 DP ID 和 DP Code 的唯一性。创建 DP 的步骤,请参考 产品功能

获取对象

IThingIPCDpHelper 提供与设备信息通信的能力,提供了下发控制指令、查询当前功能点数据的能力。

接口说明

根据设备 ID 初始化设备控制类。

IThingIPCDpHelper createIPCDpHelper(@NonNull String devId)

示例代码

IThingIPCDpHelper ipcDpHelper = ThingIPCSdk.createIPCDpHelper(devId);

根据 DP ID 查询 DP Code

接口说明

该方法可以查询到 DP ID 对应的 DP Code。

String getDPCodeById(String dpId);

示例代码

String dpCode = dpHelper.getDPCodeById(dpId);

根据 DP Code 查询 DP ID

接口说明

该方法可以查询到 DP Code 对应的 DP ID。

String getDPIdByCode(String dpCode);

示例代码

String dpId = dpHelper.getDPCodeById(dpCode);

查询 DP 值

通过缓存查询

接口说明

通过缓存查询对应设备功能的数据,传入 DP Code 和 指定的 DP 数据类型返回查询结果。

<T> T getCurrentValue(String dpCode, @NonNull Class<T> tClass);

示例代码

 String currentValue = ipcDpHelper.getCurrentValue(dpCode, String.class);

通过发送指令查询

接口说明

通过发送指令给设备查询对应功能的数据,传入 DP Code,指定的 DP 数据类型及返回的 IQueryDpsCallback

<T> void queryDpValueFromRemote(String dpCode, IQueryDpsCallback<T> callback, Class<T> tClass);

示例代码

 ipcDpHelper.queryValueByDPCodeRemote(dpCode, new IQueryDpsCallback<Object>() {
                @Override
                public void onQueryDpsSuccess(String dpCode, Object value) {
                    // 查询到设备实时返回值
                }

                @Override
                public void onQueryDpsFail(String dpCode, String errorCode, String errorMsg) {
                    L.i(TAG, "onQueryDpsFail ");
                }
            }, Object.class);

查询设备支持的功能

接口说明

通过该方法可以判断设备是否支持指定的 DP。如果设备不支持某 DP,调用 数据下发数据查询 的方法会失败。入参为设备功能的 DP Code。

boolean querySupportByDPCode(String dpCode);

示例代码

boolean support = dpHelper.querySupportByDPCode(WAKEUP_CODE);

下发数据

接口说明

您可以通过局域网或者云端两种方式发送控制指令,即数据下发。

void publishDps(String dpCode, Object value, IResultCallback callback);

示例代码

IResultCallback iResultCallback = new IResultCallback() {
            @Override
            public void onError(String code, String error) {

            }

            @Override
            public void onSuccess() {

            }
        };
dpHelper.publishDps(dpCode, true, iResultCallback);

注册监听

接口说明

您可以通过该接口来注册监听设备状态的上报信息,数据下发查询 DP 若不设置回调可通过此监听来查询设备的上报信息。

void addDevListener(OnDeviceChangedListener listener);

示例代码

OnDeviceChangedListener onDeviceChangedListener = new OnDeviceChangedListener() {
            @Override
            public void onDeviceDpUpdate(String dpCode) {
                // 设备信息 DP 更新
            }

            @Override
            public void onDeviceRemoved() {
                // 设备移除
            }

            @Override
            public void onDeviceStatusChanged(boolean online) {
                // 设备状态是否在线变更
            }

            @Override
            public void onDeviceNetworkStatusChanged(boolean status) {
              // 设备网络状态变更
            }

            @Override
            public void onDeviceInfoUpdate() {
              // 设备信息变更
            }
        };
mDPHelper.addDevListener(onDeviceChangedListener);

反注册监听

接口说明

如果您注册了上述监听,退出时请进行反注册。否则有内存泄漏的风险。

void removeDevListener(OnDeviceChangedListener listener);

示例代码

mDPHelper.removeDevListener(onDeviceChangedListener);

销毁资源

接口说明

您需要在对象使用完成,通常是退出时销毁资源。否则有内存泄漏风险。

void onDestroy();

标准 DP 功能

您可以在 涂鸦 IoT 开发平台 上,查看摄像机类产品的标准 DP 功能定义。