激光扫地机

更新时间:2023-09-19 03:00:53下载pdf

激光型扫地机借助 MQTT 和云存储传输数据。扫地机将地图或清扫路径以文件的形式保存在云端,其中涉及到获取云存储配置信息、接收文件上传完成的实时消息、文件下载功能。

推荐您优先使用 扫地机 P2P 获取接收文件上传完成的实时消息。

功能简介

扫地机设备所有功能对应 ThingSmartSweeperDevice 类,需要使用设备 ID 进行初始化。错误的设备 ID 会导致初始化失败,返回 nil。

类名 说明
ThingSmartSweeperDevice 扫地机设备相关的类

获取云存储配置

从云端获取云存储配置信息。

- (void)initCloudConfigWithSuccess:(void (^)(NSString *bucket))success
                           failure:(void (^)(NSError * _Nullable error))failure;

参数说明

类名 说明
success 成功回调,返回 bucket 文件存储空间信息
failure 失败回调

示例代码

Objective-C:

[self.sweeperDevice initCloudConfigWithSuccess:^(NSString * _Nonnull bucket) {

} failure:^(NSError * _Nullable error) {

}];

Swift:

sweeperDevice?.initCloudConfig(success: { (bucket) in

}, failure: { (error) in

})

更新云存储配置

由于获取到的文件地址有时效性,当文件地址失效时,需要调用接口更新云存储配置。

- (void)updateCloudConfigWithSuccess:(void (^)(NSString *bucket))success
                             failure:(void (^)(NSError * _Nullable error))failure;

参数说明

类名 说明
success 成功回调,返回 bucket 文件存储空间信息
failure 失败回调

示例代码

Objective-C:

[self.sweeperDevice updateCloudConfigWithSuccess:^(NSString * _Nonnull bucket) {

} failure:^(NSError * _Nullable error) {

}];

Swift:

sweeperDevice?.updateCloudConfig(success: { (bucket) in

}, failure: { (error) in

})

获取完整文件地址

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

接口说明

- (nullable NSString *)getCloudFileDownloadURLWithBucket:(NSString *)bucket path:(NSString *)path;

参数说明

参数 说明
bucket 文件存储空间
path 地图、清扫路径等文件的存储相对路径

示例代码

Objective-C:

NSString *url = [self.sweeperDevice getCloudFileDownloadURLWithBucket:<#bucket#> path:<#path#>];

Swift:

let url = sweeperDevice?.getCloudFileDownloadURL(withBucket: "", path: "")

获取数据内容

根据地图、清扫路径等文件在云端存储的相对路径,下载文件数据。

接口说明

- (void)getSweeperDataWithBucket:(NSString *)bucket
                            path:(NSString *)path
                         success:(void (^)(NSData *data))success
                         failure:(void (^)(NSError * _Nullable error))failure;

参数说明

参数 说明
bucket 文件存储空间
path 地图、清扫路径等文件等的存储相对路径
success 成功回调,返回文件具体内容的 data
failure 失败回调

示例代码

Objective-C:

[self.sweeperDevice getSweeperDataWithBucket:<#bucket#> path:<#path#> success:^(NSData * _Nonnull data) {

} failure:^(NSError * _Nullable error) {

}];

Swift:

sweeperDevice?.getSweeperData(withBucket: "", path: "", success: { (data) in

}, failure: { (error) in

})

获取实时的地图文件信息

获取当前清扫中的文件(地图、清扫路径)在云端存储的相对路径。

- (void)getSweeperCurrentPathWithSuccess:(void (^)(NSString *bucket, NSDictionary<ThingSmartSweeperCurrentPathKey, NSString *> *paths))success
                                 failure:(void (^)(NSError * _Nullable error))failure;

参数说明

ThingSmartSweeperCurrentPathKey 说明
ThingSmartSweepCurrentMapPathKey 当前地图的相对路径对应的 key
ThingSmartSweepCurrentRoutePathKey 当前清扫路径的相对路径对应的 key
参数 说明
success 成功回调
  • bucket:文件存储空间
  • paths:地图和清扫路径存储的相对路径
failure 失败回调

示例代码

Objective-C:

[self.sweeperDevice getSweeperCurrentPathWithSuccess:^(NSString * _Nonnull bucket, NSDictionary<ThingSmartSweeperCurrentPathKey,NSString *> * _Nonnull paths) {

        NSString *mapPath = paths[ThingSmartSweepCurrentMapPathKey];
        NSString *routePath = paths[ThingSmartSweepCurrentRoutePathKey];

    } failure:^(NSError * _Nullable error) {

    }];

Swift:

sweeperDevice?.getSweeperCurrentPath(success: { (bucket, paths) in

            let mapPath = paths[ThingSmartSweepCurrentMapPathKey]
            let routePath = paths[ThingSmartSweepCurrentRoutePathKey]

        }, failure: { (error) in

        })

获取历史清扫记录

从云端获取激光型扫地机的历史清扫记录。

接口说明

- (void)getSweeperHistoryDataWithLimit:(NSUInteger)limit
                                offset:(NSUInteger)offset
                             startTime:(long)startTime
                               endTime:(long)endTime
                               success:(void (^)(NSArray<ThingSmartSweeperHistoryModel *> *datas, NSUInteger totalCount))success
                               failure:(void (^)(NSError * _Nullable error))failure;

参数说明

类名 说明
ThingSmartSweeperHistoryModel 历史清扫记录
属性 类型 说明
fileId NSString 清扫记录文件 ID
time long 清扫记录文件时间戳
extend NSString 清扫记录拆分读取规则
bucket NSString 清扫记录文件的存储空间
file NSString 清扫记录文件存储的相对路径
参数 说明
limit 一次获取数据的数量,建议最大不要超过 100
offset 获取数据的偏移量,用于分页
startTime 起始时间戳,默认不传
endTime 结束时间戳,默认不传
success 成功回调,返回清扫记录数组的 datas 和历史清扫记录总数 totalCount
failure 失败回调

示例代码

Objective-C:

[self.sweeperDevice getSweeperHistoryDataWithLimit:50 offset:0 startTime:-1 endTime:-1 success:^(NSArray<ThingSmartSweeperHistoryModel *> * _Nonnull datas, NSUInteger totalCount) {

    } failure:^(NSError * _Nullable error) {

    }];

Swift:

sweeperDevice?.getSweeperHistoryData(withLimit: 50, offset: 0, success: { (datas, count) in

        }, failure: { (error) in

        })

删除历史清扫记录

删除当前激光型扫地机设备指定的历史清扫记录。最多可以删除 100 条记录。

接口说明

- (void)removeSweeperHistoryDataWithFileIds:(NSArray<NSString *> *)fileIds
                                    success:(void (^)(void))success
                                    failure:(void (^)(NSError * _Nullable error))failure;

参数说明

参数 说明
fileIds 清扫记录文件 ID 的字符串数组
success 成功回调
failure 失败回调

示例代码

Objective-C:

[self.sweeperDevice removeSweeperHistoryDataWithFileIds:<#fileIds#> success:^{

    } failure:^(NSError * _Nullable error) {

    }];

Swift:

sweeperDevice?.removeSweeperHistoryData(withFileIds: [""], success: {

        }, failure: { (error) in

        })

获取多楼层地图数据

针对激光型扫地机一次清扫记录有多个地图的情况,提供从云端获取多地图的历史清扫记录。

接口说明

- (void)getSweeperMultiHistoryDataWithLimit:(NSUInteger)limit
                                     offset:(NSUInteger)offset
                                  startTime:(long)startTime
                                    endTime:(long)endTime
                                    success:(void(^)(NSArray<ThingSmartSweeperHistoryModel *> *datas, NSUInteger totalCount))success
                                    failure:(void(^)(NSError * _Nullable error))failure;

参数说明

参数 说明
limit 一次获取数据的数量,建议最大不要超过 100
offset 获取数据的偏移量,用于分页
startTime 起始时间戳,默认不传
endTime 结束时间戳,默认不传
success 成功回调,返回清扫记录数组的 datas 和历史清扫记录总数 totalCount
failure 失败回调

示例代码

Objective-C:

[self.sweeperDevice getSweeperMultiHistoryDataWithLimit:50 offset:0 startTime:-1 endTime:-1 success:^(NSArray<ThingSmartSweeperHistoryModel *> * _Nonnull datas, NSUInteger totalCount) {

    } failure:^(NSError * _Nullable error) {

    }];

Swift:

sweeperDevice?.getSweeperMultiHistoryData(withLimit: 50, offset: 0, success: { (datas, count) in

        }, failure: { (error) in

        })

命名多楼层地图

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

接口说明

- (void)sweeperFileNameUpdateWithFileId:(NSNumber *)fileId
                              fileName:(NSString *)fileName
                               success:(void (^)(id result))success
                               failure:(void (^)(NSError * _Nullable error))failure;

参数说明

参数 说明
fileId 地图 ID
fileName 地图名称
success 成功回调
failure 失败回调

示例代码

Objective-C:

[self.sweeperDevice sweeperFileNameUpdateWithFileId:@1 fileName:@"" success:^(id _Nonnull result) {

    } failure:^(NSError * _Nullable error) {

    }];

Swift:

sweeperDevice?.sweeperFileNameUpdate(withFileId: 1, fileName: "", success: { (success) in

        }, failure: { (error) in

        })

清扫文件上传完成的消息实时回调

2.2.1 及以后版本的扫地机 SDK 下架了此功能,如有需要,请使用 P2P 通道获取实时数据。

激光型扫地机在工作中,实时地图或清扫路径数据上传到云端完成的消息回调。通过设置 ThingSmartSweeperDeviceDelegate 代理协议,监听实时消息回调。

MQTT 通知消息数据模型

类名 说明
ThingSmartSweeperMQTTMessage 设备上传完文件发送的 MQTT 通知消息
属性 类型 说明
mapId NSString 地图、清扫路径的文件 ID
mapType ThingSmartSweeperMQTTMessageType 文件类型
  • 0:地图
  • 1:路径
mapPath NSString 地图、清扫路径文件存储的相对路径

文件上传的消息回调

- (void)sweeperDevice:(ThingSmartSweeperDevice *)sweeperDevice didReceiveMessage:(ThingSmartSweeperMQTTMessage *)message;

参数说明

参数 说明
sweeperDevice 扫地机设备实例
message 设备上传完成后,推送的 MQTT 消息

示例代码

Objective-C:

self.sweeperDevice = [ThingSmartSweeperDevice deviceWithDeviceId:<#devId#>];
self.sweeperDevice.delegate = self;

// 实现代理方法
- (void)sweeperDevice:(ThingSmartSweeperDevice *)sweeperDevice didReceiveMessage:(ThingSmartSweeperMQTTMessage *)message {

}

Swift:

sweeperDevice = ThingSmartSweeperDevice.init(deviceId: "your_devId")
sweeperDevice?.delegate = self

func sweeperDevice(_ sweeperDevice: ThingSmartSweeperDevice, didReceive message: ThingSmartSweeperMQTTMessage) {

}

清扫数据实时回调

2.2.1 及以后版本的扫地机 SDK 下架了此功能,请使用 P2P 获取实时数据。

设备上传完文件之后的消息回调,设置 shouldAutoDownloadDataYES 后,触发该回调下载文件内容。

- (void)sweeperDevice:(ThingSmartSweeperDevice *)sweeperDevice didReceiveMessage:(ThingSmartSweeperMQTTMessage *)message downloadData:(nullable NSData *)data downloadError:(nullable NSError *)error;

参数说明

参数 说明
sweeperDevice 扫地机设备实例
message 设备上传完成后,推送的 MQTT 消息
data 文件下载后 NSData 类型的具体内容
error 文件下载出错的错误信息

示例代码

Objective-C:

self.sweeperDevice = [ThingSmartSweeperDevice deviceWithDeviceId:<#devId#>];
self.sweeperDevice.delegate = self;

// 实现代理方法
- (void)sweeperDevice:(ThingSmartSweeperDevice *)sweeperDevice didReceiveMessage:(ThingSmartSweeperMQTTMessage *)message downloadData:(nullable NSData *)data downloadError:(nullable NSError *)error {

}

Swift:

sweeperDevice = ThingSmartSweeperDevice.init(deviceId: "your_devId")
sweeperDevice?.delegate = self

func sweeperDevice(_ sweeperDevice: ThingSmartSweeperDevice, didReceive message: ThingSmartSweeperMQTTMessage, downloadData data: Data?, downloadError error: Error?) {

    }