设备服务

更新时间:2024-09-13 06:45:32下载pdf

设备服务提供 MQTT 操作工具、蓝牙操作工具和设备操作等接口。

MQTT 操作工具

MQTT 操作工具可以实现 MQTT 的订阅和发布等功能。

订阅主题

参数说明

参数名 类型 是否必填 说明
topic String 要订阅的主题
callback IMQTTSubscribeCallback 订阅回调函数

代码示例

MQTTHelper.subscribe("topic", new IMQTTSubscribeCallback() {
            @Override
            public void onError(String s, String s1) {
                Log.d(TAG, "onError: " + s);

            }

            @Override
            public void onSuccess() {
                Log.d(TAG, "onSuccess: ");

            }
        });

取消订阅主题

参数说明

参数名 类型 是否必填 说明
topic String 要取消订阅的主题
callback IMQTTSubscribeCallback 取消订阅回调函数

代码示例

MQTTHelper.unsubscribe("topic", callback);

向指定主题发布一条消息

参数说明

参数名 类型 是否必填 说明
topic String 要发布的主题
data String 要发布的内容
callback IndustryCallBack 发布回调函数

代码示例

MQTTHelper.publish("topic", data, new IndustryCallBack() {
            @Override
            public void onError(int code, String msg) {
                Log.d(TAG, "onError: " + msg);

            }

            @Override
            public void onSuccess() {
                Log.d(TAG, "onSuccess: ");

            }
        });

注册消息监听

参数说明

参数名 类型 是否必填 说明
listener IMQTTListener 消息监听

代码示例

MQTTHelper.registerMessageListener(new IMQTTListener() {
            @Override
            public void onReceiveError(topic: String, code: String, msg: String) {

            }

            @Override
            public void onReceiveSuccess(topic: String, protocol: Int, jsonData: String) {

            }
        });

取消注册消息监听

参数说明

参数名 类型 是否必填 说明
listener IMQTTListener 消息监听

代码示例

MQTTHelper.registerMessageListener(listener);

蓝牙操作工具

常用属性解释

BleConnectBean 对象

属性 类型 是否必填 说明
devId String 设备 ID
directConnect boolean 是否直接连接
level int 等级
scanTimeout int 扫描超时时间
autoConnect boolean 是否自动连接
extInfo ExtInfo 可选 扩展信息

连接离线设备

参数说明

参数名 类型 是否必填 说明
beans List 包含 BleConnectBean 对象的列表

代码示例

List<BleConnectBean> beans = new ArrayList<>();
BleConnectBean bleConnectBean = new BleConnectBean(
        "your_dev_id", // 设置 devId 属性
        false, // 设置 directConnect 属性
        0, // 设置 level 属性
        30000, // 设置 scanTimeout 属性
        false, // 设置 autoConnect 属性
        null // 设置 extInfo 属性(可选,传入 null 表示没有 extInfo)
);
beans.add(bleConnectBean);
BleToolService.connectBleDevices(beans);

断开连接设备

代码示例

List<BleConnectBean> beans = new ArrayList<>();
BleConnectBean bleConnectBean = new BleConnectBean(
        "your_dev_id", // 设置 devId 属性
        false, // 设置 directConnect 属性
        0, // 设置 level 属性
        30000, // 设置 scanTimeout 属性
        false, // 设置 autoConnect 属性
        null // 设置 extInfo 属性(可选,传入 null 表示没有 extInfo)
);
beans.add(bleConnectBean);
BleToolService.disconnectBleDevices(beans);

设备管理

常见属性解释

IDevice 接口

接口 说明
getDeviceId(): String 设备 ID
getUUID(): String 设备 UUID
getName(): String 设备名称
getIcon(): String 设备图标
getProductId(): String 产品 ID
getCategory(): String 设备品类缩写,用于标注该产品所属的品类。例如,kg 表示开关,cz 表示插座。详情请参考 标准指令集
getCapability(): Int 联网通信能力标位:
  • 0:Wi-Fi
  • 1:有线
  • 2:GPRS
  • 3:NB-IoT
  • 10:蓝牙
  • 11:蓝牙 Mesh
  • 12:Zigbee
  • 13:红外
  • 14:Zigbee 配网
getProtocolAttribute(): Long 协议支持接入标位
getTimezoneId(): String 设备所在的时区
isCloudOnline(): Boolean 设备的云端在线状态
isLocalOnline(): Boolean 设备的局域网在线状态
isOnline(): Boolean 设备是否在线,指局域网或者云端在线
getLatitude(): String 设备纬度
getLongitude(): String 设备经度
getDps(): Map<String, Any> 获取设备数据点(DP)
publishDps(dps: DpCommand, callback: IndustryCallBack) 设备 DP 功能控制
getSchemas(): Map<String, DpSchema> 获取设备 DP 模式
addDeviceListener(listener: IDeviceListener) 设置设备监听
removeDeviceListener(listener: IDeviceListener) 移除设备监听
getWifiSignalStrength(callback: IndustryValueCallBack) 查询 Wi-Fi 信号强度
getDevAttribute(): Long 设备标志位:
  • bit0:设备是否支持免配网
  • bit1:设备是否支持 DP query 31 号协议查询
  • bit2:设备是否支持本地联动能力
  • bit3:设备是否支持 Wi-Fi 扫描
  • bit4:设备是否支持 Google local home
  • bit5:设备是否支持闪电配网能力
  • bit6:设备是否支持蓝牙控制
  • bit7:设备是否支持安防能力
  • bit8:设备是否是共享设备
  • bit9:设备是否支持日出日落定时
  • bit10:设备是否支持故障替换能力
  • bit11:设备是否支持 OTA
  • bit12:设备是否支持 Wi-Fi 备用网络切换
  • bit14:设备是否支持涂鸦标准协议
  • bit15:设备是否支持自定义透传
  • bit16:设备是否支持行业
  • bit17:设备是否支持 OCPP 协议
  • bit18:设备是否支持云快充协议
  • bit19:设备是否支持物模型
newOtaManager(): IDeviceOtaManager 获取设备 OTA 管理实例
newBackupManager(): IDeviceWifiBackupManager 设备备用网络。是否支持此功能,需要参考 getDevAttribute() 返回的值,bit12 支持此功能
getMeta(): Map<String, Any>? 调用 getMeta()?.get("wifiEnable") 来查询设备是否激活云端链路,蓝牙 Wi-Fi 双模设备会使用到该标识

DpCommand 对象

属性 类型 是否必填 说明
publishMode DpsPublishMode 数据下发方式
dps List DP 数据集

获取设备详情

根据设备 ID,加载设备对象。

参数说明

参数名 类型 是否必填 说明
deviceId String 设备 ID

代码示例

// 方式一
DeviceService.load("deviceId", new IndustryValueCallBack<IDevice>() {
            @Override
            public void onSuccess(IDevice iDevice) {
                Log.d(TAG, "onSuccess: ");

            }

            @Override
            public void onError(int i, String s) {
                Log.d(TAG, "onError: " + s);

            }
        });

// 方式二
IDevice device = DeviceService.device("deviceId")
if (device != null) {

}

修改设备名称

参数说明

参数名 类型 是否必填 说明
deviceId String 要重命名的设备 ID
newName String 设备的新名称
callback IndustryCallBack 重命名设备后的回调函数

代码示例

DeviceService.rename("deviceId", "newName", new IndustryCallBack() {
            @Override
            public void onSuccess() {
                Log.d(TAG, "onSuccess: ");
            }

            @Override
            public void onError(int i, String s) {
                Log.d(TAG, "onError: " + s);

            }
        });

删除设备

参数说明

参数名 类型 是否必填 说明
deviceId String 要删除的设备 ID
callback IndustryCallBack 删除设备后的回调函数

代码示例

DeviceService.remove("deviceId", new IndustryCallBack() {
            @Override
            public void onSuccess() {
                Log.d(TAG, "onSuccess: ");
            }

            @Override
            public void onError(int i, String s) {
                Log.d(TAG, "onError: " + s);

            }
        });

恢复出厂设置

参数说明

参数名 类型 是否必填 说明
deviceId String 设备 ID
callback IndustryCallBack 回调函数

代码示例

DeviceService.resetFactory("deviceId", new IndustryCallBack() {
            @Override
            public void onSuccess() {
                Log.d(TAG, "onSuccess: ");
            }

            @Override
            public void onError(int i, String s) {
                Log.d(TAG, "onError: " + s);

            }
        });

注册设备监听

IDevice 提供设备相关信息的监听,包括但不限于:

  • DP 数据
  • 设备名称
  • 设备在线状态

参数说明

参数 说明
listener 设备状态监听

代码示例

iDevice.addDeviceListener(new IDeviceListener() {
    @Override
    public void onDpUpdate(String s, String s1) {
        Log.d(TAG, "onDpUpdate: ");
    }

    @Override
    public void onRemoved(String s) {
        Log.d(TAG, "onRemoved: ");
    }

    @Override
    public void onStatusChanged(String s, boolean b) {
        Log.d(TAG, "onStatusChanged: ");
    }

    @Override
    public void onNetworkStatusChanged(String s, boolean b) {
        Log.d(TAG, "onNetworkStatusChanged: ");
    }

    @Override
    public void onDevInfoUpdate(String s) {

    }
});

取消设备监听

参数说明

参数 说明
listener 取消设备状态监听

代码示例

iDevice.removeDeviceListener(listener);

设备控制

参数说明

参数名 类型 是否必填 说明
dpCommand DpCommand DP 命令
callback IndustryCallBack 成功回调函数

创建 dpCommand 示例

DpCommand dpCommand = new DpCommand.Builder()
    .addDp("key","value")
    .publishMode(DpsPublishMode.AUTO)
    .build();

代码示例

iDevice.publishDps(dpCommand, new IndustryCallBack() {
                    @Override
                    public void onSuccess() {
                        Log.d(TAG, "onSuccess: ");
                    }

                    @Override
                    public void onError(int i, String s) {
                        Log.d(TAG, "onError: ");

                    }
                });

退出页面销毁监听

接口说明

iDevice.newBackupManager().onDestroy();

设备固件升级

常见属性解释

FirmwareUpgradeInfo 对象

属性 类型 说明
desc String 升级文案
upgradeStatus Int 升级状态
  • 0:无新版本
  • 1:有新版本
  • 2:在升级中
  • 5:等待设备唤醒
version String 新版本使用的固件版本
currentVersion String 当前的固件版本
timeout Int 超时时间
upgradeType Int 升级类型
  • 0:App 提醒升级
  • 2:App 强制升级
  • 3:检测升级
type Int 普通固件通道类型
  • 0:主联网模块、Wi-Fi 模块、蓝牙模块
  • 1:蓝牙模块
  • 2:GPRS 模块
  • 3:Zigbee 模块
  • 5:RS-433 模块
  • 6:NB-IoT 模块
  • 9:MCU 模块
  • 10~19:扩展通道
typeDesc String 固件通道描述
lastUpgradeTime Long 上次升级时间
firmwareDeployTime Long 固件部署时间
fileSize Long 固件包的大小,单位:字节
controlType Int 升级中是否可控制
  • YES:升级中可控制
  • NO:升级中不可控制
upgradingDesc String 固件升级中的提示文案
downloadingDesc String 下载中的提示文案
remind String 前置校验规则未通过的提示文案
canUpgrade Boolean? 前置校验规则是否通过
  • null:无前置校验规则,可直接升级
  • false:有前置校验,不可升级,建议展示 remind 文案
  • true:有前置校验,可以升级
devType Int 设备类型
  • 0:普通设备
  • 1:低功耗设备
waitingDesc String 固件等待设备唤醒的文案
upgradeMode Int 固件类别,v3.35.5 开始支持
  • 0:普通固件
  • 1:PID 版本升级固件

DeviceUpgradeStatusBean 对象

属性 类型 说明
devId String 设备 ID
firmwareType int 固件类型
statusText String 状态描述
statusTitle String 状态标题
progress int 进度。部分情况下参数值可能小于 0,请忽略此种小于 0 的进度
status DevUpgradeStatusEnum 升级状态枚举
  • 2:在升级中
  • 3:升级成功
  • 4:升级失败
  • 5:等待设备唤醒
  • 6:设备已下载固件
  • 7:升级超时
  • 100:App 正在准备中,例如正在连接蓝牙设备、App 正在下载固件包
upgradeMode Int 固件类别
  • 0:普通固件
  • 1:PID 版本升级,v3.35.5 开始支持
errorMsg String 失败信息
errorCode Int 失败错误码

获取设备固件升级信息

iDevice.newOtaManager().fetchFirmwareUpgradeInfo(new IndustryDataCallBack<List<FirmwareUpgradeInfo>>() {
    @Override
    public void onSuccess(List<FirmwareUpgradeInfo> firmwareUpgradeInfos) {
        Log.d(TAG, "onSuccess: ");
    }

    @Override
    public void onFailure(String s, String s1) {
        Log.d(TAG, "onFailure: ");
    }
});

开始升级

参数说明

参数名 类型 说明
upgradeInfoList List 设备固件升级信息

代码示例

iDevice.newOtaManager().startOTA(upgradeInfoList);

继续升级

参数说明

参数名 类型 说明
isContinue Boolean 是否继续升级

代码示例

iDevice.newOtaManager().continueOTA(isContinue)

取消升级

参数说明

参数名 类型 说明
firmwareType Int 固件类型
callback IndustryNormalCallback 回调

代码示例

iDevice.newOtaManager().cancelOTA(0, new IndustryNormalCallback() {
    @Override
    public void onSuccess() {
        Log.d(TAG, "onSuccess: ");
    }

    @Override
    public void onFailure(String s, String s1) {
        Log.d(TAG, "onFailure: ");
    }
});

获取设备固件升级状态

代码示例

iDevice.newOtaManager().fetchUpgradingInfo(new IndustryDataCallBack<DeviceUpgradeStatusBean>() {
    @Override
    public void onSuccess(DeviceUpgradeStatusBean deviceUpgradeStatusBean) {
        Log.d(TAG, "onSuccess: ");
    }

    @Override
    public void onFailure(String s, String s1) {
        Log.d(TAG, "onFailure: ");
    }
});

回调监听

代码示例

iDevice.newOtaManager().registerOTAListener(new IDeviceOtaListener() {
    @Override
    public void firmwareUpgradeStatus(DeviceUpgradeStatusBean deviceUpgradeStatusBean) {
        Log.d(TAG, "firmwareUpgradeStatus: ");
    }
});

备用网络

通过 iDevice.getDevAttribute() & (1 << 12),判断当前设备是否支持设置备用网络。

  • 1 表示支持
  • 0 表示不支持

常用属性解释

ConnectWifiInfoBean 对象

属性 类型 说明
devId String 设备 ID
tId String 消息 ID
ssid String Wi-Fi SSID
signal Int Wi-Fi 信号强度
network Int 网络状态
version Int 当前协议版本
hash String 当前 Wi-Fi 的哈希值

BackupWifiInfoListBean 对象

参数说明

属性 类型 说明
devId String 设备 ID
tId String 消息 ID
maxNum String 设备可以存储的最大 SSID 数量
backupList MutableList 备份的 Wi-Fi 网络信息列表,类型为 [BackupWifiInfoBean]

BackupWifiInfoBean 对象

属性 类型 说明
ssid String Wi-Fi SSID
hash String Wi-Fi 密码哈希值
passwd String Wi-Fi 密码

BackupWifiResultBean 对象

参数说明

属性 类型 说明
devId String 设备 ID
tId String 消息 ID
ssid String Wi-Fi SSID
resCode Int 设备响应代码
ssidList MutableList Wi-Fi SSID 列表

查询设备连接的 Wi-Fi 信息

参数说明

参数名 类型 是否必填 说明
callback IndustryDataCallBack 回调

代码示例

iDevice.newBackupManager().fetchConnectWifiInfo(new IndustryDataCallBack<ConnectWifiInfoBean>() {
    @Override
    public void onSuccess(ConnectWifiInfoBean connectWifiInfoBean) {
        Log.d(TAG, "onSuccess: ");
    }

    @Override
    public void onFailure(String s, String s1) {
        Log.d(TAG, "onFailure: ");
    }
});

查询设备的备用 Wi-Fi 列表

代码示例

iDevice.newBackupManager().fetchBackupWifiInfoList(new IndustryDataCallBack<BackupWifiInfoListBean>() {
    @Override
    public void onSuccess(BackupWifiInfoListBean backupWifiInfoListBean) {
        Log.d(TAG, "onSuccess: ");

    }

    @Override
    public void onFailure(String s, String s1) {
        Log.d(TAG, "onFailure: ");

    }
});

设置备用网络列表

参数说明

参数 描述
backupWifiList 备用 Wi-Fi 信息 Bean
callback 回调

代码示例

ArrayList<BackupWifiInfoBean> backupWifiList = new ArrayList<>();
                // 新添加的,设置密码
                BackupWifiInfoBean backupWifiBean = new BackupWifiInfoBean();
                backupWifiBean.setSsid("test1");
                backupWifiBean.setPasswd("12345678");
                backupWifiList.add(backupWifiBean);

                iDevice.newBackupManager().setBackupWifiInfoList(backupWifiList, new IndustryDataCallBack<BackupWifiResultBean>() {
                    @Override
                    public void onSuccess(BackupWifiResultBean backupWifiResultBean) {
                        Log.d(TAG, "onSuccess: ");
                    }

                    @Override
                    public void onFailure(String s, String s1) {
                        Log.d(TAG, "onFailure: ");
                    }
                });

切换到新 Wi-Fi 网络

参数说明

参数 类型 说明
ssid String Wi-Fi 名称
password String Wi-Fi 密码
callback IndustryDataCallBack 回调

代码示例

iDevice.newBackupManager().switchToTargetWifi("ssid", "password", new IndustryDataCallBack<SwitchWifiResultBean>() {
    @Override
    public void onSuccess(SwitchWifiResultBean switchWifiResultBean) {
        Log.d(TAG, "onSuccess: ");
    }

    @Override
    public void onFailure(String s, String s1) {
        Log.d(TAG, "onFailure: ");

    }
});

切换到已备份的 Wi-Fi 网络

参数说明

参数 类型 说明
hash String Wi-Fi 密码的 Hash 值
callback IndustryDataCallBack 回调

代码示例

iDevice.newBackupManager().switchToBackupWifi("hash", new IndustryDataCallBack<SwitchWifiResultBean>() {
    @Override
    public void onSuccess(SwitchWifiResultBean switchWifiResultBean) {
        Log.d(TAG, "onSuccess: ");
    }

    @Override
    public void onFailure(String s, String s1) {
        Log.d(TAG, "onFailure: ");
    }
});