激光扫地机

更新时间:2024-06-26 02:24:34下载pdf

激光扫地机数据分为实时数据和历史记录数据。这两种数据都包含了地图数据和路径数据,以文件的形式存储在涂鸦开发者平台上。

  • 实时数据的地图和路径是分别存储在不同文件内的。

  • 历史数据的地图和路径是存储在同一个文件内的,根据指定规则进行拆分读取地图和路径数据。

    3.1.0 至 3.2.3-1 的扫地机 SDK 版本,不支持对象存储 OSS 实时数据功能。请使用 P2P 获取实时数据。

  • 建议所有接口在 initCloudConfig 成功之后调用,配置信息的有效期半个小时失败后可以调用 updateCloudConfig

获取扫地机数据

激光扫地机实时通道的流程如下图所示:

激光扫地机

扫地机新旧版本入口

新旧版本入口不同,功能接口相同。

  • 旧版本入口 ITuyaSweeper

    ITuyaSweeper iTuyaSweeper = TuyaHomeSdk.getSweeperInstance()
    
  • 新版本入口 ITuyaSweeperKit

    ITuyaSweeperKitSdk iTuyaSweeperKitSdk = TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class);
    
    ITuyaSweeperKit iTuyaSweeperKit = iTuyaSweeperKitSdk.getSweeperInstance()
    

初始化云存储配置

获取文件存储的 bucket 信息。

/**
 *
 *  @param devId     设备 ID
 *  @param callback
 * /
void initCloudConfig(String devId, ITuyaCloudConfigCallback callback);

示例代码

TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().initCloudConfig("xxx", new ITuyaCloudConfigCallback() {
    @Override
    public void onConfigSuccess(String bucket) {

    }

    @Override
    public void onConfigError(String errorCode, String errorMessage) {

    }
});

更新云存储配置

获取最新 bucket 信息。获取到的文件地址有时效性限制。如果文件地址失效,您可以调用以下接口更新云配置。

/**
 *
 * @param devId    设备 ID
 * @param callback
 * /
void updateCloudConfig(String devId, ITuyaCloudConfigCallback callback);

示例代码

TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().updateCloudConfig("", new ITuyaCloudConfigCallback() {
    @Override
    public void onConfigSuccess(String bucket) {

    }

    @Override
    public void onConfigError(String errorCode, String errorMessage) {

    }
});

注册或关闭实时数据通道

返回文件相对路径

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

获取地图文件在服务器上完整的路径,可自行下载解析。

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

/**
 *  开启扫地机数据通道,获取到的是 url
 *
 *  @param listener
 * /
void startConnectSweeperDataChannel(ITuyaSweeperDataListener listener);

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

回调数据结构 SweeperDataBean

字段 类型 描述
mapType int 0 表示地图,1 表示路径
mapPath String 文件路径或者地图路径

示例代码


TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().startConnectSweeperDataChannel(new ITuyaSweeperDataListener() {
    @Override
    public void onSweeperDataReceived(SweeperDataBean bean) {

    }
});

返回 byte 数组

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

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

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

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

回调数据结构 SweeperByteData

字段 类型 描述
type int
  • 0 表示地图
  • 1 表示路径
data byte[] 数据内容
devId String 设备 ID

示例代码


TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().startConnectSweeperByteDataChannel(new ITuyaSweeperByteDataListener() {
    @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);

代码示例

TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().getCloudFileUrl("bucket","path");

获取数据内容

获取历史数据时,可以直接调用该接口读取云端的文件内容。

/**
 *  获取数据内容(byte[])
 *
 *  @param bucket
 *  @param path
 *  @param listener
 * /
void getSweeperByteData(String bucket, String path, ITuyaByteDataListener listener);

代码示例

TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().getSweeperByteData("bucket", "path", new ITuyaByteDataListener() {
    @Override
    public void onSweeperByteData(byte[] data) {

    }

    @Override
    public void onFailure(int code, String msg) {

    }
});

获取当前清扫数据

接口说明

    /**
        * 获取实时的地图存储路径和路线存储路径
        * @param devId    设备 ID
        * @param callback
        */
        void getSweeperCurrentPath(String devId,ITuyaResultCallback<SweeperPathBean> callback);

SweeperPathBean字段说明:

字段 类型 描述
mapPath String 地图 path
routePath String 路径 path

代码示例


TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().getSweeperCurrentPath("devId", new ITuyaResultCallback<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,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 是一个扩展字段可以和设备透传。例如 {"map_id":123, "layout_size":4589, "route_size":1024}

  • layout_size:地图文件数据大小。
  • route_size:路径文件数据大小。

读取历史数据的文件时,根据 layout_sizeroute_size 分别读取地图数据和路径数据。

代码示例

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) {

    }
});

删除历史清扫记录

删除云端历史记录以及存储的数据。最多可以删除 100 条记录。

/**
 *  @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");

TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().deleteSweeperHistoryData("devId", list, new ITuyaDelHistoryCallback() {
    @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,
                                   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) {

    }
});

命名多楼层地图

针对激光型扫地机一次清扫记录有多个地图的情况,提供多楼层地图命名的接口。

    /**
     * 多楼层地图命名
     * @param devId 设备 ID
     * @param id 地图 ID
     * @param name 地图名称
     * @param callback 命名回调
     */
    void sweeperFileNameUpdateWithDevId(String devId, long id, String name,final ITuyaSweeperNameUpdateCallback callback);

代码示例

TuyaOptimusSdk.getManager(ITuyaSweeperKitSdk.class).getSweeperInstance().sweeperFileNameUpdateWithDevId("devId",id,"name", new ITuyaSweeperNameUpdateCallback() {
    @Override
    public void onNameUpdate(boolean result){

    }

    @Override
    public void void onFailure(String code, String msg){

    }
});