激光扫地机

更新时间: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) {

    }
});

返回 byte 数组

以后的版本将会下架此功能,请使用 P2P 获取实时数据。

当云配置初始化成功后,即可开启实时数据通道来获取实时数据。

/**
 * 开启实时数据通道,获取到的是 byte[]
 *
 * @param listener
 * /
void startConnectSweeperByteDataChannel(IThingSweeperByteDataListener listener);

/**
 * 关闭实时数据通道
 * /
void stopConnectSweeperByteDataChannel();

回调数据结构 SweeperByteData

字段 类型 描述
type int
  • 0 表示地图
  • 1 表示路径
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:路径文件数据大小。

读取历史数据的文件时,根据 layout_sizeroute_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){

        }
        });