更新时间:2024-03-04 08:54:43
激光扫地机数据分为实时数据和历史记录数据。这两种数据都包含了地图数据和路径数据,以文件的形式存储在涂鸦 IoT 开发平台上。
推荐优先使用数据传输速度更快的 P2P 获取实时数据方案,详情请参考 扫地机 P2P。
建议所有接口在初始化云存储配置(initCloudConfig
)成功之后调用,配置信息的有效期半个小时失败后可以调用更新云存储配置(updateCloudConfig
)。
激光扫地机实时通道的流程如下图所示:
功能入口 IThingSweeperKit
:
IThingSweeperKitSdk iThingSweeperKitSdk = ThingOptimusSdk.getManager(IThingSweeperKitSdk.class);
IThingSweeperKit iThingSweeperKit = iThingSweeperKitSdk.getSweeperInstance()
获取文件存储的 bucket
信息。
/**
*
* @param devId 设备 ID
* @param callback
* /
void initCloudConfig(String devId, IThingCloudConfigCallback callback);
示例代码
ThingOptimusSdk.getManager(IThingSweeperKitSdk.class).getSweeperInstance().initCloudConfig("xxx", new IThingCloudConfigCallback() {
@Override
public void onConfigSuccess(String bucket) {
}
@Override
public void onConfigError(String errorCode, String errorMessage) {
}
});
获取最新 bucket
信息。获取到的文件地址有时效性限制,如果文件地址失效,您可以调用以下接口更新云配置。
/**
*
* @param devId 设备 ID
* @param callback
* /
void updateCloudConfig(String devId, IThingCloudConfigCallback callback);
示例代码
ThingOptimusSdk.getManager(IThingSweeperKitSdk.class).getSweeperInstance().updateCloudConfig("", new IThingCloudConfigCallback() {
@Override
public void onConfigSuccess(String bucket) {
}
@Override
public void onConfigError(String errorCode, String errorMessage) {
}
});
推荐优先使用 P2P 获取实时数据方案,详情请参考 扫地机 P2P。
获取地图文件在服务器上完整的路径,可自行下载解析。
当云配置初始化成功后,即可开启实时数据通道来获取实时数据。
/**
* 开启扫地机数据通道,获取到的是 url
*
* @param listener
* /
void startConnectSweeperDataChannel(IThingSweeperDataListener listener);
/**
* 关闭实时数据通道
* /
void stopConnectSweeperDataChannel();
回调数据结构 SweeperDataBean
字段 | 类型 | 描述 |
---|---|---|
mapType | int | 0 表示地图,1 表示路径 |
mapPath | String | 文件路径或者地图路径 |
示例代码
ThingOptimusSdk.getManager(IThingSweeperKitSdk.class).getSweeperInstance().startConnectSweeperDataChannel(new IThingSweeperDataListener() {
@Override
public void onSweeperDataReceived(SweeperDataBean bean) {
}
});
以后的版本将会下架此功能,请使用 P2P 获取实时数据。
当云配置初始化成功后,即可开启实时数据通道来获取实时数据。
/**
* 开启实时数据通道,获取到的是 byte[]
*
* @param listener
* /
void startConnectSweeperByteDataChannel(IThingSweeperByteDataListener listener);
/**
* 关闭实时数据通道
* /
void stopConnectSweeperByteDataChannel();
回调数据结构 SweeperByteData
字段 | 类型 | 描述 |
---|---|---|
type | int |
|
data | byte[] | 数据内容 |
devId | String | 设备 ID |
示例代码
ThingOptimusSdk.getManager(IThingSweeperKitSdk.class).getSweeperInstance().startConnectSweeperByteDataChannel(new IThingSweeperByteDataListener() {
@Override
public void onSweeperByteData(SweeperByteData data) {
}
@Override
public void onFailure(int code, String msg) {
}
});
/**
*
* @param bucket 文件存储的 Bucket
* @param path 文件相对路径(startConnectSweeperDataChannel)
* /
String getCloudFileUrl(String bucket, String path);
代码示例
ThingOptimusSdk.getManager(IThingSweeperKitSdk.class).getSweeperInstance().getCloudFileUrl("bucket","path");
获取历史数据时,可以直接调用该接口读取云端的文件内容。
/**
* 获取数据内容(byte[])
*
* @param bucket
* @param path
* @param listener
* /
void getSweeperByteData(String bucket, String path, IThingByteDataListener listener);
代码示例
ThingOptimusSdk.getManager(IThingSweeperKitSdk.class).getSweeperInstance().getSweeperByteData("bucket", "path", new IThingByteDataListener() {
@Override
public void onSweeperByteData(byte[] data) {
}
@Override
public void onFailure(int code, String msg) {
}
});
接口说明
/**
* 获取实时的地图存储路径和路线存储路径
* @param devId 设备 ID
* @param callback
*/
void getSweeperCurrentPath(String devId,IThingResultCallback<SweeperPathBean> callback);
SweeperPathBean
字段说明:
字段 | 类型 | 描述 |
---|---|---|
mapPath | String | 地图 path |
routePath | String | 路径 path |
代码示例
ThingOptimusSdk.getManager(IThingSweeperKitSdk.class).getSweeperInstance().getSweeperCurrentPath("devId", new IThingResultCallback<SweeperPathBean>() {
@Override
public void onSuccess(SweeperPathBean result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
接口说明
/**
*
* @param devId 设备 ID
* @param limit 一次获取数据的数量(建议最大不要超过 100)
* @param offset 获取数据的偏移量(用于分页)
* @param callback
* /
void getSweeperHistoryData(String devId, int limit, int offset,IThingResultCallback<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,IThingResultCallback<SweeperHistory> callback);
回调数据 SweeperHistory
字段 | 类型 | 描述 |
---|---|---|
datas | List |
历史数据列表 |
totalCount | int | 数据总量 |
历史数据 SweeperHistoryBean
字段 | 类型 | 描述 |
---|---|---|
id | String | 地图 ID |
time | long | 文件上传时间戳 |
bucket | String | 文件存储的 Bucket |
file | String | 文件路径 |
extend | String | 扩展字段 |
extend
是一个扩展字段可以和设备透传。例如 {"map_id":123, "layout_size":4589, "route_size":1024}
。
读取历史数据的文件时,根据 layout_size
和 route_size
分别读取地图数据和路径数据。
代码示例
ThingOptimusSdk.getManager(IThingSweeperKitSdk.class).getSweeperInstance().getSweeperHistoryData("devId", 10, 0, new IThingResultCallback<SweeperHistory>() {
@Override
public void onSuccess(SweeperHistory result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
删除云端历史记录以及存储的数据。最多可以删除 100 条记录。
/**
* @param devId 设备 ID
* @param fileIdList 历史记录 ID 集合
* @param callback
* /
void deleteSweeperHistoryData(String devId, List<String> fileIdList, final IThingDelHistoryCallback callback);
代码示例
List<String> list = new ArrayList<>();
list.add("10");
list.add("11");
ThingOptimusSdk.getManager(IThingSweeperKitSdk.class).getSweeperInstance().deleteSweeperHistoryData("devId", list, new IThingDelHistoryCallback() {
@Override
public void onSuccess() {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
接口说明
/**
* 获取扫地机历史记录(多地图)
* @param devId 设备 ID
* @param limit 一次获取数据的数量(建议最大不要超过 100)
* @param offset 获取数据的偏移量(用于分页)
* @param callback
* /
void getSweeperMultiMapHistoryData(String devId, int limit, int offset,
IThingResultCallback<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,
IThingResultCallback<SweeperHistory> callback);
代码示例
ThingOptimusSdk.getManager(IThingSweeperKitSdk.class).getSweeperInstance().getSweeperMultiMapHistoryData("devId", 20, 0, new IThingResultCallback<SweeperHistory>() {
@Override
public void onSuccess(SweeperHistory result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
针对激光型扫地机一次清扫记录有多个地图的情况,提供多楼层地图命名的接口。
/**
* 多楼层地图命名
* @param devId 设备 ID
* @param id 地图 ID
* @param name 地图名称
* @param callback 命名回调
*/
void sweeperFileNameUpdateWithDevId(String devId, long id, String name,final IThingSweeperNameUpdateCallback callback);
代码示例
ThingOptimusSdk.getManager(IThingSweeperKitSdk.class).getSweeperInstance().sweeperFileNameUpdateWithDevId("devId",id,"name", new IThingSweeperNameUpdateCallback() {
@Override
public void onNameUpdate(boolean result){
}
@Override
public void void onFailure(String code, String msg){
}
});
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈