激光扫地机
扫地机数据获取
激光扫地机实时通道流程图
功能简介
- 激光扫地机数据分为实时数据和历史记录数据。这两种数据都包含了地图数据和路径数据,以文件的形式存储在 OSS 上。
- 其中实时数据的地图和路径是分别存储在不同文件内的,历史数据的地图和路径是存储在同一个文件内的,根据指定规则进行拆分读取地图和路径数据。
- 建议所有接口在
initCloudConfig
成功之后调用,配置信息的有效期半个小时失败后updateCloudConfig
扫地机新旧版本入口
新旧版本入口不同,功能接口相同
老版本入口
ITuyaSweeper
ITuyaSweeper iTuyaSweeper = TuyaHomeSdk.getSweeperInstance()
新版本入口
ITuyaSweeperKit
ITuyaSweeperKitSdk iTuyaSweeperKitSdk = TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class); ITuyaSweeperKit iTuyaSweeperKit = iTuyaSweeperKitSdk.getSweeperInstance()
初始化云存储配置
接口说明
- 老版本(0.1.0之前版本) :支持
新版本(0.1.0以后版本) :支持
获取文件存储的 bucket信息
/** * * @param devId 设备id * @param callback */ void initCloudConfig(String devId, ITuyaCloudConfigCallback callback);
示例代码
//老版本
TuyaHomeSdk.getSweeperInstance().initCloudConfig("xxx", new ITuyaCloudConfigCallback() {
@Override
public void onConfigSuccess(String bucket) {
}
@Override
public void onConfigError(String errorCode, String errorMessage) {
}
});
//新版本
TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().initCloudConfig("xxx", new ITuyaCloudConfigCallback() {
@Override
public void onConfigSuccess(String bucket) {
}
@Override
public void onConfigError(String errorCode, String errorMessage) {
}
});
更新云存储配置
接口说明
- 老版本(0.1.0之前版本) :支持
- 新版本(0.1.0以后版本) :支持
获取最新 bucket 信息
由于获取到的文件地址有时效性,当文件地址失效时,需要调用以下接口更新云配置
/**
*
* @param devId 设备id
* @param callback
*/
void updateCloudConfig(String devId, ITuyaCloudConfigCallback callback);
示例代码
//老版本
TuyaHomeSdk.getSweeperInstance().updateCloudConfig(deviceId, new ITuyaCloudConfigCallback() {
@Override
public void onConfigSuccess(String bucket) {
}
@Override
public void onConfigError(String errorCode, String errorMsg) {
}
});
//新版本
TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().updateCloudConfig("", new ITuyaCloudConfigCallback() {
@Override
public void onConfigSuccess(String bucket) {
}
@Override
public void onConfigError(String errorCode, String errorMessage) {
}
});
注册或关闭实时数据通道(返回文件相对路径)
接口说明
- 老版本(0.1.0之前版本) :支持
- 新版本(0.1.0以后版本) :支持
当云配置初始化成功后,即可开启实时数据通道来获取实时数据
/**
* 开启扫地机数据通道,获取到的是url
*
* @param listener
*/
void startConnectSweeperDataChannel(ITuyaSweeperDataListener listener);
/**
* 关闭实时数据通道
*/
void stopConnectSweeperDataChannel();
回调数据结构 SweeperDataBean
字段 | 类型 | 描述 |
---|---|---|
mapType | int | 0表示地图,1表示路径 |
mapPath | String | 文件路径或者地图路径 |
示例代码
//老版本
TuyaHomeSdk.getSweeperInstance().startConnectSweeperDataChannel(new ITuyaSweeperDataListener() {
@Override
public void onSweeperDataReceived(SweeperDataBean sweeperDataBean) {
}
});
//新版本
TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().startConnectSweeperDataChannel(new ITuyaSweeperDataListener() {
@Override
public void onSweeperDataReceived(SweeperDataBean bean) {
}
});
注册或关闭实时数据通道(返回byte数组)
接口说明
- 老版本(0.1.0之前版本) :支持
- 新版本(0.1.0以后版本) :支持
当云配置初始化成功后,即可开启实时 数据通道来获取实时数据
/**
* 开启实时数据通道,获取到的是byte[]
*
* @param listener
*/
void startConnectSweeperByteDataChannel(ITuyaSweeperByteDataListener listener);
/**
* 关闭实时数据通道
*/
void stopConnectSweeperByteDataChannel();
回调数据结构 SweeperByteData
字段 | 类型 | 描述 |
---|---|---|
type | int | 0表示地图,1表示路径 |
data | byte[] | 数据内容 |
devId | String | 设备id |
示例代码
//老版本
TuyaHomeSdk.getSweeperInstance().startConnectSweeperByteDataChannel(new ITuyaSweeperByteDataListener() {
@Override
public void onSweeperByteData(SweeperByteData data) {
}
@Override
public void onFailure(int code, String msg) {
}
});
//新版本
TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().startConnectSweeperByteDataChannel(new ITuyaSweeperByteDataListener() {
@Override
public void onSweeperByteData(SweeperByteData data) {
}
@Override
public void onFailure(int code, String msg) {
}
});
获取完整文件地址
接口说明
- 老版本(0.1.0之前版本) :支持
新版本(0.1.0以后版本) :支持
获取地图文件在 OSS 服务器上完整的路径,可自行下载解析
/** * * @param bucket 文件存储的bucket * @param path 文件相对路径(startConnectSweeperDataChannel) */ String getCloudFileUrl(String bucket, String path);
代码示例
//老版本
TuyaHomeSdk.getSweeperInstance().getCloudFileUrl("bucket","path");
//新版本
TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().getCloudFileUrl("bucket","path");
获取数据内容
接口说明
- 老版本(0.1.0之前版本) :支持
新版本(0.1.0以后版本) :支持
获取历史数据时,可以直接调用该接口读取云端的文件内容
/**
* 获取数据内容(byte[])
*
* @param bucket
* @param path
* @param listener
*/
void getSweeperByteData(String bucket, String path, ITuyaByteDataListener listener);
代码示例
//老版本
TuyaHomeSdk.getSweeperInstance().getSweeperByteData("bucket", "path", new ITuyaByteDataListener() {
@Override
public void onSweeperByteData(byte[] data) {
}
@Override
public void onFailure(int code, String msg) {
}
});
//新版本
TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().getSweeperByteData("bucket", "path", new ITuyaByteDataListener() {
@Override
public void onSweeperByteData(byte[] data) {
}
@Override
public void onFailure(int code, String msg) {
}
});
获取当前清扫数据
接口说明
- 老版本(0.1.0之前版本) :支持
- 新版本(0.1.0以后版本) :支持
/**
* 获取实时的地图存储路径和路线存储路径
* @param devId 设备 id
* @param callback
*/
void getSweeperCurrentPath(String devId,ITuyaResultCallback<SweeperPathBean> callback);
SweeperPathBean字段信息
字段 | 类型 | 描述 |
---|---|---|
mapPath | String | 地图 path |
routePath | String | 路径 path |
代码示例
//老版本
TuyaHomeSdk.getSweeperInstance().getSweeperCurrentPath("devId", new ITuyaResultCallback<SweeperPathBean>() {
@Override
public void onSuccess(SweeperPathBean result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
//新版本
TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().getSweeperCurrentPath("devId", new ITuyaResultCallback<SweeperPathBean>() {
@Override
public void onSuccess(SweeperPathBean result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
获取历史清扫记录
接口说明
- 老版本(0.1.0之前版本) :支持
- 新版本(0.1.0以后版本) :支持
/**
*
* @param devId 设备 id
* @param limit 一次获取数据的数量(建议最大不要超过100)
* @param offset 获取数据的偏移量(用于分页)
* @param callback
*/
void getSweeperHistoryData(String devId, int limit, int offset,ITuyaResultCallback<SweeperHistory> callback);
/**
*
* @param devId 设备 id
* @param limit 一次获取数据的数量(建议最大不要超过100)
* @param offset 获取数据的偏移量(用于分页)
* @param startTime 起始时间戳
* @param endTime 结束时间戳
* @param callback
*/
void getSweeperHistoryData(String devId, int limit, int offset, long startTime, long endTime,ITuyaResultCallback<SweeperHistory> callback);
回调数据结构 SweeperHistory字段信息
字段 | 类型 | 描述 |
---|---|---|
datas | List |
历史数据列表 |
totalCount | int | 数据总量 |
SweeperHistoryBean字段信息
字段 | 类型 | 描述 |
---|---|---|
id | String | 地图 id |
time | long | 文件上传时间戳 |
bucket | String | 文件存储的 bucket |
file | String | 文件路径 |
extend | String | 扩展字段 |
【extend说明】 extend是一个扩展字段可以和设备透传( 例如:{"map_id":123,"layout_size":4589,"route_size":1024} )
layout_size表示地图文件大小,即文件中地图数据的size
route_size表示路径文件大小,即文件中路径数据的size
读取历史数据的文件时根据layout_size和route_size分别读取地图数据和路径数据
代码示例
//老版本
TuyaHomeSdk.getSweeperInstance().getSweeperHistoryData("devId", 10, 0, new ITuyaResultCallback<SweeperHistory>() {
@Override
public void onSuccess(SweeperHistory result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
//新版本
TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().getSweeperHistoryData("devId", 10, 0, new ITuyaResultCallback<SweeperHistory>() {
@Override
public void onSuccess(SweeperHistory result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
删除历史清扫记录
接口说明
- 老版本(0.1.0之前版本) :支持
新版本(0.1.0以后版本) :支持
删除云端历史记录以及存储在oss的数据
/** * @param devId 设备 id * @param fileIdList 历史记录 id 集合 * @param callback */ void deleteSweeperHistoryData(String devId, List<String> fileIdList, final ITuyaDelHistoryCallback callback);
代码示例
List<String> list = new ArrayList<>();
list.add("10");
list.add("11");
//老版本 TuyaHomeSdk.getSweeperInstance().deleteSweeperHistoryData("devId", list, new ITuyaDelHistoryCallback() {
@Override
public void onSuccess() {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
//新版本 TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().deleteSweeperHistoryData("devId", list, new ITuyaDelHistoryCallback() {
@Override
public void onSuccess() {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
清空历史清扫记录
接口说明
- 老版本(0.1.0之前版本) :支持
新版本(0.1.0以后版本) :支持
删除所有历史记录
/** * 删除所有历史记录 * @param devId 设备 id * @param callback */ void deleteAllHistoryData(String devId,final ITuyaDelHistoryCallback callback);
代码示例
//老版本
TuyaHomeSdk.getSweeperInstance().deleteAllHistoryData("devId", new ITuyaDelHistoryCallback() {
@Override
public void onSuccess() {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
//新版本 TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().deleteAllHistoryData("devId", new ITuyaDelHistoryCallback() {
@Override
public void onSuccess() {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
获取历史清扫记录(多地图)
接口说明
- 老版本(0.1.0之前版本) :不支持
- 新版本(0.1.0以后版本) :支持
/**
* 获取扫地机历史记录(多地图)
* @param devId 设备id
* @param limit 一次获取数据的数量(建议最大不要超过100)
* @param offset 获取数据的偏移量(用于分页)
* @param callback
*/
void getSweeperMultiMapHistoryData(String devId, int limit, int offset,
ITuyaResultCallback<SweeperHistory> callback);
/**
* 获取扫地机历史记录 (适用于多地图)
* @param devId 设备id
* @param limit 一次获取数据的数量(建议最大不要超过100)
* @param offset 获取数据的偏移量(用于分页)
* @param startTime 起始时间戳
* @param endTime 结束时间戳
* @param callback
*/
void getSweeperMultiMapHistoryData(String devId, int limit, int offset, long startTime, long endTime,
ITuyaResultCallback<SweeperHistory> callback);
代码示例
TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().getSweeperMultiMapHistoryData("devId", 20, 0, new ITuyaResultCallback<SweeperHistory>() {
@Override
public void onSuccess(SweeperHistory result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
删除所有历史记录(多地图)
接口说明
- 老版本(0.1.0之前版本) :不支持
- 新版本(0.1.0以后版本) :支持
/**
* 删除所有历史记录(适用于多地图)
* @param devId
* @param callback
*/
void deleteAllMultiMapHistoryData(String devId, ITuyaDelHistoryCallback callback);
代码示例
TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().deleteAllMultiMapHistoryData("devId", new ITuyaDelHistoryCallback() {
@Override
public void onSuccess() {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});