山海云端管理系统开放API
  1. 合并版接口文档
山海云端管理系统开放API
  • 合并版接口文档
    • 云平台开放平台接口文档
  1. 合并版接口文档

云平台开放平台接口文档

一. 文档说明

版本说明作者时间备注
V1.0新建版本俞宏禄2023-12-121.新建获取token接口
2.新建企业运营数据接口
3.新建设备运行数据接口
4.新建设备基础数据接口
5.新建设备作业数据接口
6.新建任务数据详情接口
7.新建任务报告详情接口
V1.1修改俞宏禄2023-12-251.新建任务报告详情接口修改
2.新增错误码
V1.2修改俞宏禄2024-01-031.新增企业库存数据接口
2.新增企业历史绑定数据接口
3.新增设备告警数据接口
4.新增批量设备基础数据查询接口
V1.3修改俞宏禄2024-03-261.新增任务暂停接口
2.新增任务恢复接口
3.新增任务停止接口
4.新增机器人当前状态接口
5.新增获取地图列表接口接口
6.新增获取对应地图信息接口
7.新增远程下发清扫路径接口
8.新增目标点移动接口
9.新增错误码

0. 生产环境地址

http://cleanrobot.yijiahe.com/

1. 开发者账号申请

开发者账号申请,根据用户提交的信息,为其生成对应的appId和appKey,同时需要该用户申请者已经在云端创建相对应的组织,同时已有相关设备信息。
  appId作为一种全局唯一的标识符,其作用主要在于方便用户身份识别以及数据分析等方面。为了防止其他用户通过恶意使用别人的appId来发起请求,一般都会采用配对appKey的方式,类似于一种密码。appId和appKey通常会组合生成一套签名,并按照一定规则进行加密处理。在请求方发起请求时,需要将这个签名值一并提交给提供方进行验证。如果签名验证通过,则可以进行数据交互,否则将被拒绝。这种机制能够保证数据的安全性和准确性,提高系统的可靠性和可用性。

2. 安全规范

云端开放平台提供的所有接口均为HTTP接口,仅POST一种方式(见具体的接口说明),调用接口时需要提供接口签名参数。

获取token接口,需要额外传appId参数。其他接口不需要传appId参数,需要额外传token参数。

参数形式为:

 {
	"encryptScript": "XXX",
	"appId": "XXX"
}
或 {
	"encryptScript": "XXX",
	"token": "XXX"
}

2.1 签名说明:

假设平台分配的appId= 107d26abf9d84ddb、appKey= 3bd62f3631f2536e。

以获取token接口为例讲述如何对参数进行签名,下面是接口需要的参数。

序号参数名参数值参数说明
1requestIddc79e02e14ff4020bdb63cabefaf54ff每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母
2timestamp1702363386633当前请求时间戳,精确到毫秒,方便诊断网络延时
3sign待计算使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝

注意:page , pageSize 参数不参与签名

参数sign是通过其他的参数计算得到的,计算方法如下:

第1步:

将参数名称按照字母先后顺序a、b、c...x、y、z排列,如果第1个字母一样就按第2个字母排列,以此类推,字母不区分大小写。

上述2个参数按照规则排列后的结果是requestId timestamp。

第2步:

把参数名替换为相应的参数值,结果是:

dc79e02e14ff4020bdb63cabefaf54ff 1702363386633。

第3步:

去掉参数间的空格,结果是:

dc79e02e14ff4020bdb63cabefaf54ff1702363386633。

第4步:

把appKey参数值直接放在末尾,结果是:dc79e02e14ff4020bdb63cabefaf54ff17023633866333bd62f3631f2536e。

第5步:

采用MD5签名算法,则计算结果为

sign=MD5(dc79e02e14ff4020bdb63cabefaf54ff17023633866333bd62f3631f2536e)

sign=7d9686a1d00b3d14a5243defb0de6929

2.2 AES加密说明

第1步:

根据MD5签名算法将sign参数值计算出来

sign=7d9686a1d00b3d14a5243defb0de6929

第2步:

将所有的参数生成json字符串,参数的顺序没有要求

 {
	"requestId": "dc79e02e14ff4020bdb63cabefaf54ff",
	"timestamp": "1702363386633",
	"sign": "7d9686a1d00b3d14a5243defb0de6929"
}

第3步:

采用AES加密算法,以appKey为加密的key计算加密,由于AES加密结果是乱码形式,所以还需要将加密的中间结果再进行base64加密,最后encryptScript结果为:

bnSHtVhdh1rCcMF/FpU5sq4KAu0ftJNrV4LljXIblDvGxy9/SPUV8R9k2DpxmLRTT+Y6OM0+B3wO7lC1OXnO9siQvnHEFh9qOojP5g9o9VGrcArpsbU5VyASK3JrPYbU24c3GAZ9dMc2QduM29bniZAthfJFPruZBJv3Q604/WU=

加上额外的appId参数,最终完整的请求接口参数如下:

{
	"encryptScript": "bnSHtVhdh1rCcMF/FpU5sq4KAu0ftJNrV4LljXIblDvGxy9/SPUV8R9k2DpxmLRTT+Y6OM0+B3wO7lC1OXnO9siQvnHEFh9qOojP5g9o9VGrcArpsbU5VyASK3JrPYbU24c3GAZ9dMc2QduM29bniZAthfJFPruZBJv3Q604/WU=",
	"appId": "107d26abf9d84ddb"
}

2.3 解密说明:

假设平台分配的开发信息为appId= 107d26abf9d84ddb、appKey= 3bd62f3631f2536e。

请求接口时,接口会将明文数据进行加密后再响应,所以需要解密后才知道明文的数据,比如请求获取token接口:

响应结果json如下:

{
	"encryptScript": "Ltpu/ZZTbiocIcu+I9zZYzSMZqgCLzRyAO8yC3a/r9QY4nGKdP9rf9OFNblLNT0pBKfVs4tVUbZBSODwlTDAodjcJlEnpCw3e7NXslcRCbxmgYNkmKfcDU/Fi82TOR84yxg+CrfyZg9BVm3BHLmuOQ9FR0uwP+oJCcbhHnKUYlHsVtxLmpihUe4RSIQihbYwK7G+hW8zRdjtsBaJcvx2hqwRa6j1f3nbpE9RC71EaZWS49mSfTVXDAuilQnboeu3l7dAuaby3vQ3ArS15XxQlLbJNJIjaZiLfsdYW6avlR9ZN5MtnawolD8hI0gzdgxT"
}

需要将encryptScript进行解密,解密后的结果为:

{
	"code": "200",
	"msg": "请求成功",
	"success": true,
	"requestId": "dc79e02e14ff4020bdb63cabefaf54ff",
	"timestamp": "1702365697256",
	"sign": "e7a9d4384ee70ef92670453ab3da6888",
	"data": {
		"token": "dJsaJQRCmUn2DSlvuAfM3/YuHNysZm9hbksGhUsRDAQ="
	}
}

进行AES解密时,也是使用appKey作为解密的key解密。

在进行AES解密时,需要先将数据进行base64解码后再进行实际的AES解密。

字段名称类型是否必填备注
codeStringY响应码, 200=成功 其他值=失败
msgStringY请求状态信息
successBooleanY请求是否成功, true=成功 false=失败
requestIdStringY回传请求时传入的requestId
timestampStringY接口响应时当前的时间戳
signStringY接口对响应数据的签名
dataObjectY返回数据

2.4 签名 sign 生成算法:

示例代码(JAVA):

import cn.hutool.core.util.StrUtil;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;

import static cn.hutool.crypto.SecureUtil.md5;

public class Md5Util {

    public static String getSDKV3Sign(Map<String, Object> params, String appKey, String... values) {
        if (params == null || StrUtil.isBlank(appKey)) {
            return null;
        }
        StringBuilder stringA = new StringBuilder();
        List<Map.Entry<String, Object>> mappingList = new ArrayList<>(params.entrySet());
        mappingList= mappingList.stream().filter(mappingF -> !mappingF.getKey().startsWith("page")).collect(Collectors.toList());
        mappingList.sort(Comparator.comparing(mappingF -> mappingF.getKey().toLowerCase()));
        for (Map.Entry<String, Object> mapping : mappingList) {
            stringA.append(mapping.getValue() == null ? "" : mapping.getValue());
        }
        for (String value : values) {
            stringA.append(value);
        }
        stringA.append(appKey);
        System.out.println("################ StringA = " + stringA);
        return md5(stringA.toString());
    }
}

2.5 加密、解密方法

示例代码(JAVA):

import cn.hutool.core.codec.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
public class AesUtil {
    /**
     * 云端AES加密方案
     */
    public static String aesEncryptSDK(String sSrc, String sKey) throws Exception {
        if (sKey == null) {
            System.out.print("Key为空null");
            return null;
        }
        // 判断Key是否为16位
        if (sKey.length() != 16) {
            System.out.print("Key长度不是16位");
            return null;
        }
        byte[] raw = sKey.getBytes("utf-8");
        SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");//"算法/模式/补码方式"
        cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
        byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));

        StringBuilder stringBuilder = new StringBuilder();
        if (encrypted == null || encrypted.length <= 0) {
            return null;
        }
        for (int i = 0; i < encrypted.length; i++) {
            int v = encrypted[i] & 0xFF;
            String hv = Integer.toHexString(v);
            if (hv.length() < 2) {
                stringBuilder.append(0);
            }
            stringBuilder.append(hv);
        }
        String base64Str = new Base64().encode(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。
        return base64Str;
    }

    /**
     * 云端设备AES解密
     */
    public static String aesDecrypt(String sSrc, String sKey) {
        try {
            // 判断Key是否正确
            if (sKey == null) {
                System.out.print("Key为空null");
                return null;
            }
            // 判断Key是否为16位
            if (sKey.length() != 16) {
                System.out.print("Key长度不是16位");
                return null;
            }
            if (sSrc.length() < 32) {
                System.out.print("密文串错误");
                return null;
            }
            byte[] raw = sKey.getBytes("utf-8");
            SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            cipher.init(Cipher.DECRYPT_MODE, skeySpec);
            byte[] encrypted1 = new Base64().decode(sSrc);//先用base64解密
            try {
                byte[] original = cipher.doFinal(encrypted1);
                String originalString = new String(original, "utf-8");
                return originalString;
            } catch (Exception e) {
                System.out.println(e);
                return null;
            }
        } catch (Exception ex) {
            System.out.println(ex);
            return null;
        }
    }

}

二.接口说明

1. 获取Token接口

接口说明:

地址/cloud/open/openapi/base/getToken
描述获取token
MethodPOST
字段名称类型是否必填备注
appIdString是企业申请的appId
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
tokenString是token

请求示例:

{
	"encryptScript": "bnSHtVhdh1rCcMF/FpU5sq4KAu0ftJNrV4LljXIblDvGxy9/SPUV8R9k2DpxmLRTT+Y6OM0+B3wO7lC1OXnO9siQvnHEFh9qOojP5g9o9VGrcArpsbU5VyASK3JrPYbU24c3GAZ9dMc2QduM29bniZAthfJFPruZBJv3Q604/WU=",
	"appId": "107d26abf9d84ddb"
}

响应示例:

加密:

{
	"encryptScript": "Ltpu/ZZTbiocIcu+I9zZYzSMZqgCLzRyAO8yC3a/r9QY4nGKdP9rf9OFNblLNT0pBKfVs4tVUbZBSODwlTDAodjcJlEnpCw3e7NXslcRCbxmgYNkmKfcDU/Fi82TOR84yxg+CrfyZg9BVm3BHLmuOQ9FR0uwP+oJCcbhHnKUYlHsVtxLmpihUe4RSIQihbYwK7G+hW8zRdjtsBaJcvx2hqwRa6j1f3nbpE9RC71EaZWS49mSfTVXDAuilQnboeu3l7dAuaby3vQ3ArS15XxQlLbJNJIjaZiLfsdYW6avlR9ZN5MtnawolD8hI0gzdgxT"
}

解密:

{
	"code": "200",
	"msg": "请求成功",
	"success": true,
	"requestId": "dc79e02e14ff4020bdb63cabefaf54ff",
	"timestamp": "1702365697256",
	"sign": "e7a9d4384ee70ef92670453ab3da6888",
	"data": {
		"token": "dJsaJQRCmUn2DSlvuAfM3/YuHNysZm9hbksGhUsRDAQ="
	}
}

2. 企业运营数据接口

接口说明:

地址/cloud/open/openapi/company/operational/info
描述获取企业运营数据
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
companyIdLong否企业组织在云端的companyId(如果要查询下级组织数据,就需要传此字段)

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
deviceCountint是设备总数
deviceOfflineCountint是离线设备总数
deviceOnlineCountint是在线设备总数
snListList是设备SN集合
-String是设备SN号
subOrgListList是企业列表集合
-Long是企业列表(companyId)
taskTimesGroupList否单项任务清洁次数
taskNameString是任务名称
taskTimesint是任务清洁次数
taskUuidString是任务uuid
totalCleanedAreaDouble是累计清洁面积(m^2)
totalCleanedTimelong是累计清洁时长(ms)
totalTaskTimesint是累计任务总数
todayCleanedAreaDouble是今日清洁面积(m^2)
todayCleanedTimelong是今日清洁时长(ms)
todayTaskTimesint是今日任务总数

请求示例:

{
	"encryptScript": "5bTX4+A9IDs5XOYRQW3P93aJtOHIvfpXgmjwpyCVNSja7BGVWdJczLgROlG8BmIEzzBMmXaUFqaJ0No9u73wzdoTz2QXnu0Lt+3/iqlVRQUBgpAnT8Ri1PkYxWLmYNq8fz8Xi4RMX2qYtuzsY5Zt6pVyJIWqgjYAR5DeKycycyQoBiD+14EGnyY2M8yR13YGzTJ/jjOCNPokIqwR8urVyQ==",
	"token": "4aKkJw2reURz3bBOov+7BrElTzRFG+Yqv1w7vJSNe0w="
}

响应示例:

加密:

 {
	"encryptScript": "Ltpu/ZZTbiocIcu+I9zZY133lD3N2ndHq+g4wF/DmwZXFmJrmY0Ldgq4YODtgWdKWgDZzko0ILjV4Dn7VfPFNJxNV6rgxfaTpPu7wrBAn4ltJUnqYbZADjrjwTls0U/dd4bapkBxRkBFUkfPL9ZB9qUDOpGmNhSRgq3ZNAorGdFZkVfipXHKqnBtJnNEy5TdNDa32np8T+GeD38tDtIcgMHXqxX5BEuaG4ydW0bLGheqCc6iKxQulz9Pwrzg3+K9CXwaPljkZDnRCM9XmjJGZO05G9xR26gRIxsFsWEVQ3zpTka6n0o3Zqy6VZMvUbQMd71VA1tX862zROPJBKtRN6i4bh33b39ED/5ezlpw51BkVSw52Y8uzZ7iTlBLedHpFh24L8+zJuReUVYCCfoB7i/WSM45nJ1GWZeHYRlEDWalyX+Zj1FIh3epEf+1JI4A+Y2/0cBOuNsiQt9nCGKAfHrH9XuH0CMjvENyBLEfmSaZcyVCfcqhlQkHBnLBwbfj3AnE5cglO1BDtKByPTQAWfinTOvIMo8Besj2UPvmnsIn/ILEDmK+2mPYUaMns0kvtG3tO4/7Crg/wVS7FZpPygadE0tpXFg6TXrlRD+Wh2nl8xcJZdXuTTwr3LD8042+4siqPOZUmUV/jrPPxOysNiSqachiD1TYDDseprIp3KrrbwAAKfs0Epbb/wBCgaJkcQORUVwA72+Brwoc2DcwEU7iS3mE9g+MxHB3qylh0o1D1RmKd26e6fkIkPckaLRlHVmuvW5JvIzFEFl0xgEs4lRTHpSKM4F8hFYsla+ujSddmCFYcyqqBseSRslbgMbcYwUdZNPeAYQNdNZbhBKFEB4JtsrXpdrsvJO7lOzgB7Jp6uVfMHuu6vZgdODC8P1lunvyyD5aCAJO/vKYpjXQiFADpl5DveEp+XmZMqQYgGFGuJh35ztPvIZnTAQY27g7k2RNAdJRP/KDSZNg4AQsz/GVqB9+SXEZYb3vpTHw6thFrV5l8+6CbOMTq9F8bKEm7JY9QCP1M9ElYoSVqJSH7lvXceuEGyXlAu9Yw+CZvAQqyosqeZOcaO7Ck60tCdw0u0Y+LKSTbl3MLfarw54vQvUkN3nS7KiuUTyMqaGETEHfJP/MuTzajT97e0lVHVjkAi+VXt1p7MD7rQ5VSD3MnlaMdgVZWfLIzizbVC0H1zxABDXRCHP7FVh/EeDEgns8qEqhAPVYSUgD6qFZWzH9PAVtOEGgDt+Cywhk4vqTUXCl/QgZnduRjFLFhXYqwymj/pyUe3v1vjTea7BFk4JtNr88lZj7+mcglItRFMWmUKVuJnsC3s3MpAwo+RyNvO6UeauVSHMZIrlhGJFSakE2p4TKOQp2lGECgkWUtYVcYGIDL2BSB/H7wbgq9QpGXfZXhFbaMSqX2ktUU+nCiQcSk792d4ZEIuLADMeMZVLnezOif29rA51BR0GPJT+NP+8MrdzjNvH7PYoxA/2jhcSeKWHrzyFdqEfZ6nL+zDmruaF3NxV11yyGeYHChXHVBWCDJiZARitritDM/5U0D0viw+/T5xq3vb6edVVWsCX5OJk/ql/Q/L2Tm+M8B8NJ+QrAnA/sAIs1NZjl8FvY9LiZM0RBVv0SGYI6YHenTNRdDHxzG/RDgGlDIbhf+fckNPaq+cXq+bsGGzfr18QuvpAqsXPyADTPDZq9TrsR2TaZL4s="
}

解密:

{
	"code": "200",
	"msg": "请求成功",
	"success": true ,
	"requestId": "fdd6afea339e44079977e087c2021f84",
	"timestamp": "1702282323017",
	"sign": "514f656061a3f34197a6f12e6f699f02",
	"data": {
		"deviceCount": 8,
		"deviceOfflineCount": 8,
		"deviceOnlineCount": 0,
		"snList": ["XXX", "YYY", ],
		"subOrgList": ["7770480916012318720", "7773511685454790656"],
		"taskTimesGroup": [{
			"taskName": "ai",
			"taskTimes": 1,
			"taskUuid": "95dfe9f4-901c-4714-b2c3-288e29d4e784"
		}],
		"todayCleanedArea": 0.0,
		"todayCleanedTime": 0,
		"todayTaskTimes": 0,
		"totalCleanedArea": 0.0,
		"totalCleanedTime": 0,
		"totalTaskTimes": 0
	}
}

3. 设备运行数据接口

接口说明:

地址/cloud/open/openapi/device/operational/info
描述获取设备运行数据
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
deviceSnString是设备SN号

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
totalCleanedAreaDouble是累计清洁面积
totalCleanedTimeint是累计清洁时长
totalTaskTimesint是累计任务总数
todayCleanedAreaDouble是今日清洁面积
todayCleanedTimeint是今日清洁时长
todayTaskTimesint是今日任务总数

请求示例:

{
	"encryptScript": "5bTX4+A9IDs5XOYRQW3P93aJtOHIvfpXgmjwpyCVNShRDckRCMtDwSLD/tuxrujLlAx1cP41jM+TqFygfmNUupWJSJ3xfrCABe6Wb7LTDfXJr8ypuyvHSmhg5MjFwSMCX+Hb98vmwULeEebguClnFrcHW6IhJ/HtXn5xymTZ29JQTXsxzCMgBAkq9/+baEuXWl99Bf6Uueno0Q6l72cK6PcyFrysRVDVemTCZs7s03iODF38e8e3LroRUEuHEhfE",
	"token": "B+kh9BDxs3e3dxEEyIoUmjfpgRNnr+FZMuhHqGIbJ4E="
}

响应示例:

加密:

{
	"encryptScript": "Ltpu/ZZTbiocIcu+I9zZY133lD3N2ndHq+g4wF/DmwZXFmJrmY0Ldgq4YODtgWdKWgDZzko0ILjV4Dn7VfPFNB6FCOPyAZnnvwXfdlNHOMX+VUrTuEawXSK9gJbHYA6b+iwRMyGq8wK7f54AZlwGG//q2Jlo61R4XW+dOfPPydT69wZB3FuV2/qF6FAnwH4UhMo5CnaUYQKCRZS1hVxgYlgWs9ARFv5HjCL/cEup83/cAzrntBDLJh7KEuMMZpGTuOn6MRR9lHnuyQHUYQtx35vv5PdSb1XfqgkSxTVwI91NZzmFqmg8ESZVIYwmOSZM97avLXNevCGW0HV/6c54rcyE1ernb2Ao9I0C+FPQicf/6VIp8ufvZA7M9x7ou5F2/x44Zy+5pk5SL5P9ggPptULkz+rRtB1eHpXai+BgkCS2r9HEUED47mkkzNn7LjQF+cABXgh0NAVjQuUElTX1E8hdGxbqbhSjrn9HNYQIr1wLi0vb3rjCJBv44VUfo3mn"
}

解密:

{
	"code": "200",
	"msg": "请求成功",
	"success": true ,
	"requestId": "a4d6a63226af44c7a21a10bc301adeb1",
	"timestamp": "1702284411409",
	"sign": "07c1f8e89992f7f4f5ba490cc9bd4c0f",
	"data": {
		"todayCleanedArea": 25.330000754892836,
        "todayCleanedTime": 390919,
        "todayTaskTimes": 1,
        "totalCleanedArea": 712.7909440950771,
        "totalCleanedTime": 13057585,
        "totalScore": 1.9,
        "totalTaskTimes": 41
	}
}

4. 设备基础数据

接口说明:

地址/cloud/open/openapi/device/detail
描述获取设备基础数据
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
deviceSnString是设备SN号

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
companyIdString是企业组织id
deviceCodeString是设备型号
deviceSnString是设备SN
deviceStatusint是设备在线状态(0.离线、1.在线
useStatusint是设备使用状态(0:购买,1:租赁,2:试用)
warrantyStatusint是保修状态 0:在保 1:在保(延保) 2:过保
warrantyTimeDate是保修截至时间
softwareVersionString否设备软件版本
hardwareVersionString否设备硬件版本
commStatusString否设备通信状态
runningStatusint否设备运行状态
cleanWaterint否设备清水量
wasteWaterint否设备污水量
remainingPowerint否设备剩余电量
deviceNameString否设备名称

请求示例:

{
	"encryptScript": "5bTX4+A9IDs5XOYRQW3P93aJtOHIvfpXgmjwpyCVNShRDckRCMtDwSLD/tuxrujLlAx1cP41jM+TqFygfmNUupWJSJ3xfrCABe6Wb7LTDfXJr8ypuyvHSmhg5MjFwSMCX+Hb98vmwULeEebguClnFrcHW6IhJ/HtXn5xymTZ29JQTXsxzCMgBAkq9/+baEuXWl99Bf6Uueno0Q6l72cK6PcyFrysRVDVemTCZs7s03iODF38e8e3LroRUEuHEhfE",
	"token": "B+kh9BDxs3e3dxEEyIoUmjfpgRNnr+FZMuhHqGIbJ4E="
}

响应示例:

加密:

{
	"encryptScript": "Ltpu/ZZTbiocIcu+I9zZY133lD3N2ndHq+g4wF/DmwZXFmJrmY0Ldgq4YODtgWdKWgDZzko0ILjV4Dn7VfPFNKjSfC2DHrC2Yxajpw10E91hyFLVTera+2umHgds4yHoRO/BuhI6LM1PzwkwR+J5q1v61d+Xn3+FfwKMn6TRNpNukCRStjoBoYCV/Sou5RT9QZ4wIjxpnWlJ3ulyWX17ns7y4eVdT6GFhHuG7SNSAigBBXpikrmQN5XBGS5o/O4Wok19JCmtNBdMbEIgoM/eIZ2fB5qIsQ63KUxuo669uOmLBt550UETecAt4TC50v2T5i9fjvCXG3r1dt6jVlC20FYdFiqVn/GR/DABlfr/ChtsapXTqgl9/skE3cEkJVH1vJp6Yau/vlYgUwMqPmquEImk9JHdm/pW+45nSgM1f1Wlv/Sn6S0rQOFSSH7izNBf3VnTiM5yWmroTycVtdVIjnrLJ2UUxvVszef7XnPYhoolz2m562l3RuQ4BugAf7HyrjW5ZhOCLlOEu6fLycapBfy2ztWjcZdBAJF99OCmy1BImyuxloEy0s5Fz1LIFLF9"
}

解密:

{
	"code": "200",
	"msg": "请求成功",
	"success": true ,
	"requestId": "a4d6a63226af44c7a21a10bc301adeb1",
	"timestamp": "1702284663462",
	"sign": "880a9419130d672f84014a61737f19bb",
	"data": {
		"companyId": "7526833571430866944",
		"deviceCode": "J40",
		"deviceSn": "J40-21-CP-SZ342952-0040",
		"deviceStatus": 0,
		"useStatus": 1,
		"warrantyStatus": 0,
		"warrantyTime": "2024-09-01 23:59:59"
	}
}

5. 设备作业数据

接口说明:

地址/cloud/open/openapi/device/job/info
描述获取设备作业数据
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
deviceSnString是设备SN号

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
mapListList否设备所有地图
mapNameString是设备地图名称
mapUuidLong是地图uuid
reportListList否设备所有任务报告
reportUuidLong是任务报告id
taskNameString是任务名称
startTimeDate是任务开始时间
endTimeDate是任务结束时间
taskListList否设备任务列表
taskNameString是任务名称
taskUuidString是任务uuid

请求示例:

{
	"encryptScript": "5bTX4+A9IDs5XOYRQW3P93aJtOHIvfpXgmjwpyCVNShRDckRCMtDwSLD/tuxrujLlAx1cP41jM+TqFygfmNUupWJSJ3xfrCABe6Wb7LTDfXJr8ypuyvHSmhg5MjFwSMCX+Hb98vmwULeEebguClnFrcHW6IhJ/HtXn5xymTZ29JQTXsxzCMgBAkq9/+baEuXWl99Bf6Uueno0Q6l72cK6PcyFrysRVDVemTCZs7s03iODF38e8e3LroRUEuHEhfE",
	"token": "B+kh9BDxs3e3dxEEyIoUmjfpgRNnr+FZMuhHqGIbJ4E="
}

响应示例:

加密:

{
	"encryptScript": "Ltpu/ZZTbiocIcu+I9zZY133lD3N2ndHq+g4wF/DmwZXFmJrmY0Ldgq4YODtgWdKWgDZzko0ILjV4Dn7VfPFNPjV5kYzs3D2PcnHRUMesB2tVxLifnw2keHaSnUyTKHx66oNlHtb2QyMNr/sfwwXjUSpWUWYLa/QGk0uG9kd+F0kxWQgTVkfwAXSrfPofY7Yuxpk8xl6T1tJw4b0NCAHDkual79RCETsia76YpDTkubQz2JaB4F/2yQ+SEXZxXEF66nbW6PhtISKixq+TSJiAy5iOHU8LfpPcw4esMKrlmMEZlYc9VOA4N+Q09JngI3FTReXA8hqmwKGJymSPfHtqsFdNrBxUMJ702ZgwSE1dkwgOLqOEBejrlQF3GDS9c8FNnZAdcKEIrvTEME08HmQ1Q=="
}

解密:

{
	"code": "200",
	"msg": "请求成功",
	"success": true ,
	"requestId": "a4d6a63226af44c7a21a10bc301adeb1",
	"timestamp": "1702285579225",
	"sign": "49d95e5738ec45054124bef3279915d6",
	"data": {
		"mapList": [
            {
                "mapName": "test",
                "mapUuid": "8105240076608126976"
            },
            ...
        ],
        "reportList": [
            {
                "endTime": "2024-04-18T00:40:15+08:00",
                "reportUuid": "8214424467464847360",
                "startTime": "2024-04-18T00:33:44+08:00",
                "taskName": "offconf"
            },
            ...
        ],
        "taskList": [
            {
                "taskName": "sweep",
                "taskUuid": "0513046b-c90b-4ce1-9ac4-e79d87679554",
                "todayCleanedArea": 0.0,
                "todayCleanedTime": 0,
                "todayTaskTimes": 0,
                "totalCleanedArea": 0.0,
                "totalCleanedTime": 0,
                "totalTaskTimes": 0
            },
            ...
        ]
	}
}

6. 任务数据详情

接口说明:

地址/cloud/open/openapi/task/detail
描述任务数据详情
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
taskUuidString是任务uuid

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
taskNameStrin是任务名称
mapNameString是地图名称
mapUrlString否地图url
mapImagePathString是地图FilePath
reverseInfoString是任务预约信息:
isRevers是否预约( true: 是, false: 否)
reverseTime预约时间 (hour:小时,min :分钟,week:星期
星期一到星期日数字标识 1,2,3,4,5,6,0
taskRunningStatusint否任务运行状态(1.暂停 2.空闲 3.运行中)
updateTimeDate是更新时间
deviceSnString是设备SN号

请求示例:

{
    "encryptScript": "fc4bYVtskH+CDE2hJrPJjXo6JuxbO6kQ+QankBmX9twojXRy5mST61CEcSY1ERuCo5OQvDQspgJSY7GDyvWKtudkkCwPQEeb+sMjxd4ARvnPREL62mA4ppTzLcFN10VE1+qQycwEBnYw7nDDy2NIdfeJ19JjHwNsGBVL+Tk07vfs4PZdSKr0mrDxBTAonoEg+7u6e+6LXNP4Y6E5NwD1TFyjYwtFD5uyXD4TZB1Gbo0=",
    "token": "mp0aHiAb8XDLjiBY5beGmJAkctTb6J2MxDLkPOCp4nQ="
}

响应示例:

加密:

{
    "encryptScript": "Ltpu/ZZTbiocIcu+I9zZYzSMZqgCLzRyAO8yC3a/r9ScTVeq4MX2k6T7u8KwQJ+JiugTIYauOW4FdHlXrrbxtWiuQmgN+XPvkbtEYIllXOhQ1kFmuBdOIFoo7fodfnincG1SLROPipnFvUK1xNMWWMoX+V4XIE65Fu0YfGJx2LZGdoO956lYvnJwxcCLyxFnsgfqaveaYTSzvytA07GHuMT/d/E4G4F6g/oulPSwO3+f/iUeyzLlcEeWJ9hamKUMHAmKZV5Mf7focYkl1PLocLt1u9v53Ak14fjWEpaOAawkTmuWZiEEVWeXSSceD27BGEUKh+2ufQdA7+dBqwlAFPnJyeiOlZOQckgBoNmGDax5GltD+vzI6oW3aIJ4EuKRzpjJxrUhTXrSh2MIAqnq0CN7DpmHkUwHROooKt4u5swM+k+FSmjVDdn/XmKnGd55//KAK4ruQEI0VGxgOG8vfzE0XoC8AeePeTLZ4y5J6MOCqSxelLyFI6f4rRk0CxPdaU+KKnGbdBLYYZ1e7U7BKvgZLy3XlJYWYGKZ5UwgeYNZaNVJ5xnKYOixhIt6GkSPDyIQiEEGLMYNMxPr8rE6Xc5d3IK6EaQglzLAW6zRZOXpRlJIcl8rHJi9oV+RFZ8RhyQCwgL5DJMctFzv1zVU5bSISBX++iW0vpd8T6k4ej2kzrVFYJnmcaqBxMH5uHD70QSHm3T9lZ/tNVk1emXTQUdjXWObzSuNFS5ohUHuMxbhtGyk2nYEGGc7qlPOyA0tBMZju80VxEE9OFfAbuWx+pqPkzxGd1exNZQdT/DHexzJYbFWGRHAoOvKWzv2mOy60Ql22cHHxX0rPPdQPfiZiV9xvLSPUBg0Ok6Y5KDoHwww1NiNCe+gfdmP6rTPUzEYXSb9Vuu1ux9/B/ZD0vgRApzDLkAHz2BGDJacJ0eGz7Ds2hVg4XFOc4oLDgFcGueaBZeAmuLZytWvCfptoBDiLSVLRxjNQrTDD7yH5r+YKM3XhB7YN0Q9nXtlZovbIbQUojg+LmQHFhU4G7rPQxbCxuNQ7D6kDWJA4SqJKr6JYu6flEcnlGAfoySAsfA5TfwNljHsQkRKLyIof8TcuGkdNXxe9jnSF5Q+jtSyIOVK4mwfEYAam58ws4U6EVtya63UO33oqgIOKkZXzbtQgbHAq4gFdmuIFaBfTzXbcxzGWNVtn7lnJYpkA1myrqz0VjkqdSSnQBgJ1UFbM3WgoaGSGA=="
}

解密:

{
    "code": "200",
    "msg": "请求成功",
    "success": true,
    "requestId": "a8c7295d70f840bcbb3507374f018d40",
    "timestamp": "1704167203423",
    "sign": "3f4f7b39ccc2b97029fa17e3126e2f79",
    "data": {
        "deviceSn": "J40-10-YJ-230302-0023",
        "mapImagePath": "/business/2023-9/maps/d68c62c5fdf644e6/2.png",
        "mapName": "2",
        "mapUrl": "http://yjh-oss-bucket-test.oss-cn-shenzhen.aliyuncs.com/user/root/business/2023-9/maps/d68c62c5fdf644e6/2.png?Expires=1704170803&OSSAccessKeyId=LTAI5tLzGj41xXeMUWM57799&Signature=zdzTCfuwMAO2JWkxbJOOFMxd6Uo%3D",
        "pathList": [
            {
                "cleanArea": 9.120000000000001,
                "cleanMode": 1,
                "cleanTimes": 1,
                "id": "37ebca2f-9deb-42a5-87de-8da8ca0f1959",
                "strength": 1,
                "type": "coverage"
            }
        ],
        "reverseInfo": "{\"isReverse\":true,\"reverseTime\":[{\"hour\":14,\"min\":0,\"week\":1},{\"hour\":14,\"min\":0,\"week\":2},{\"hour\":14,\"min\":0,\"week\":3},{\"hour\":14,\"min\":0,\"week\":4},{\"hour\":14,\"min\":0,\"week\":5}]}",
        "taskName": "2-区域1",
        "taskRunningStatus": 2,
        "taskStatus": 2,
        "taskUuid": "1012f5d5-dbac-4f08-be74-da0f09bd4252",
        "updateTime": "2023-09-11T16:30:19+08:00"
    },
    "taskUuid": "1012f5d5-dbac-4f08-be74-da0f09bd4252"
}

7. 任务报告详情

接口说明:

地址/cloud/open/openapi/report/detail
描述获取任务报告详情
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
reportUuidString是任务报告uuid

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
cleanTimesLong是清洁时长
coveragePercentDouble是清洁覆盖率
deviceNameString是设备名称
deviceSnString是设备SN
endTimeDate是结束时间
finishAreaDouble是已清洁面积
reportPicUuidString是图片文件uuid
startTimeDate是开始时间
taskNameString是任务名称
totalAreaDouble是计划清洁面积
mapNameString是任务地点
taskStatusInteger是任务状态:
1.成功
2.失败
3.暂停
4.取消
mapImageUrlString是地图文件URL
mapImagePathString是地图FilePath
cleanModesString是作业模式,多个作业模式,逗号分割:
1.洗地
2.扫地
3.拖地
4.吸尘
5.推尘
6.AI
reportErrInfoString否告警信息(任务失败时,才返回值)

请求示例:

{
    "encryptScript": "UlKFwA6VLnO0G/jNKe3HyjUHfxT+vkbAIiaUWaceBNkgnCHXnSmX7XXFuAqXsE8kDmeO1i9K9vdaUgSxBNWHWAH1vBDPflYDM3MiKYxpt4KJgcPIChufJ7EmjlLIgtcMJ81JjVZqop0Ie3lXLzYWmWFkTnMtLYzcwl99XjKAMJjOMkSdHFyhN4PQ/RRIuBafbilLWbZDP8jsDk3R+ZjL8A==",
    "token": "mp0aHiAb8XDLjiBY5beGmJAkctTb6J2MxDLkPOCp4nQ="
}

响应示例:

加密:

{
    "encryptScript": "UlKFwA6VLnO0G/jNKe3HyjUHfxT+vkbAIiaUWaceBNl5uw017j9XC8rF+rz8XYmPYFP4baCldrQ+q3e8CQlyQHOGxGAzL7CBfHde1tYORfk60QBIV1Tfy3hThgLQziaeqGy5ze6VCnUOxs9pprke5pJ4dyhAqBMmoylPOOplcgilQtsxPV2kJsbyzG18t60Yp2P+B7q61NE3e9nvtG+T32hzOmZS9UjgfORwuNg3qH/av0ZTsdt+dPYJ8/9z5UCnvj7A53i/DgJcZVCGdbc8MkHxwz+WZC2ba+tESeRHFV09v58sejY/XjQMkMR9cugm116kRMvJHiUAA3e9koLK0m8ZrNV8g8O7zOnjxZRqjU2rrkifbk+y0LaWhtmjFAl2/lFCqv6PccqVIzyMV8O97MtIOPX6rl91DMKSqO2vbJZU7nM4Vggntm6wJcAETcd6VYt4+vs2lZ4qoxWiBzG8C+v0t3GTj0JMBKshIQLFJwNIdbSYhIuCPAbi9UOjZ4WlWuY+I5AMiLCMqY8kEaug5kz/EnaFKX+A6Y0mQDQ7pag6KfNBTf9ubRPX5aUHNHxTf+Bv97KDkZfTS2F9x8RfdCwaNbiwKtjbS4K1VKbQuBcrsb6FbzNF2O2wFoly/HaG9d2jPHPzpLIzAku87B8uh+2QzHK6YaS1wBaLN0TsXjZI2xi7rwoJntTBk063QLTbLcw2m0Vhkrp2jSmLtjM2+k9eL2y0pcxn7GsD4lQuqJ0="
}

解密:

{
    "code": "200",
    "msg": "请求成功",
    "success": true,
    "requestId": "d7564d26271344619513f8e649db7208",
    "timestamp": "1704168814343",
    "sign": "2782da5423a33e63f16be5a533fdcf22",
    "data": {
        "cleanModes": "1",
        "cleanTimes": 945130,
        "coveragePercent": 0.8658871650695801,
        "deviceName": "仿真机器",
        "deviceSn": "J40-10-YJ-230302-0023",
        "endTime": "2023-09-06T11:56:50+08:00",
        "finishArea": 145.88,
        "mapName": "bz1",
        "reportPicUuid": "7547865957824200704",
        "startTime": "2023-09-06T11:41:05+08:00",
        "taskName": "bz1",
        "taskStatus": 2,
        "totalArea": 167.09
    }
}

8. 企业库存数据

接口说明:

地址/cloud/open/openapi/stock/info
描述企业库存数据
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
pageInteger否第几页(不填,默认1)
pageSizeInteger否页大小(不填,默认10)

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
pageNoInteger是页码
pageSizeInteger是页大小
totalCountInteger是记录总数
ListObject否数据集合
createTimeDate是创建时间
deviceSnString是设备SN
deviceStatusInteger是设备状态:1.新增,2.退货,3.租赁到期,4.其他
deviceTypeInteger是设备类型:1.原型 2.样机 3.量产
updateTimeDate是修改时间
deviceCodeString否设备型号
batchNoString否批次号
productSpecificationString否产品规格

请求示例:

{
    "encryptScript": "FUDO2O6QIIkOEhlPxbbDrHcFFURy/v3U1eeEy/CtGlDnedXXW5JPunsjkWYrjPsHz3aFn+6rOt9t8oL5PVCjn9Hx+gnG2x7sc5R9pYfDhMieTK9eRXa7DwwdSr9cRx+iBv6wpDYTRjYRts5MYM/MKI12LUxkIX+ur1Q8Uwr5FXk=",
    "token": "mp0aHiAb8XDLjiBY5beGmJAkctTb6J2MxDLkPOCp4nQ="
}

响应示例:

加密:

{
    "encryptScript": "Ltpu/ZZTbiocIcu+I9zZYzSMZqgCLzRyAO8yC3a/r9TODzVdwonXke7/t9D2XgKxz+dgl2UJAhL+LGZMXHmrk7ukH3vOFGZTr0NwDLjmIJP2cMhRoBNwkOjxYhuiMKkVawtTXoZbZ7cCKhT9RY3HZj48KNcLZgKoqY9IpTHmPjAVgMCfq/SwVi7j2YNlOH8+P+ClPudLvbfwYLYt1Ddr8DUbtDWR1RSvzMCsoWyjii/AomUKmyR+W/uxED8a6Z4X20TH97iGhyLAr7RnocXAArz7UV+qGN0Q3vjU3kxIl+HPyeU5hjsWGfdLk9awp9Pn1/PB2Yo7ms25zyfyFM1TlrT4XNCt+ebS4TuzcFqPoiYSHfK/JUsQD0DmJJJDsFIlZSqzNvZoAzUGXF8M3Y8AbwcSdjIgBPuFB+UogE41KKrtGSGBtMNGds/nm0/bZVnXCMRm10w+DzR3YK1ssMYWOTbMsgiX76uhkDqVcVWtRLqUb93VL5ntOW25jMQQuaDxmkMDSMPI6qJh5lnLbYN1p4kdyKRSz7EqPWUFBp8EdzDjLqtliMbiZilgdCXseMnM"
}

解密:

{
    "code": "200",
    "msg": "请求成功",
    "success": true,
    "requestId": "683c741a67c449b5bb29a4f045f2b517",
    "timestamp": "1704188219211",
    "sign": "aa710bcfbe14ba84b672849681c75a3f",
    "data": {
        "list": [
            {
                "createTime": "2023-08-29T14:43:47+08:00",
                "deviceSn": "J40-21-CP-SZ342952-0041",
                "deviceStatus": 1,
                "deviceType": "3",
                "updateTime": "2023-08-30T10:13:36+08:00"
            }
        ],
        "pageNo": 1,
        "pageSize": 10,
        "totalCount": 1,
        "totalPage": 1
    }
}

9. 企业历史库存数据

接口说明:

地址/cloud/open/openapi/stock/info/history
描述企业历史库存数据
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
pageInteger否第几页(不填,默认1)
pageSizeInteger否页大小(不填,默认10)

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
pageNoInteger是页码
pageSizeInteger是页大小
totalCountInteger是记录总数
ListObject否数据集合
bindCompanyIdLong是绑定企业id
deviceSnString是设备SN
bindStatusInteger是设备绑定状态:
0.购买
1.租赁
2.试用
deviceTypeInteger是设备类型:
1.原型
2.样机
3.量产
bindDateDate是绑定日期
deviceCodeString否设备型号
batchNoString否批次号
productSpecificationString否产品规格

请求示例:

{
    "encryptScript": "ruhd9wToSh5VlKSkcqBhigx3Tog6yx1un4Ee51X1xV1dg+ZTT3f2WCSoKwkiMaL++5RxKu0m47tbnGlG4AQkc2OSSiP4uteoCtZ+8g0zKuvnTnM1fABm5FjnbYTor5FE8K8tnPV+JxT2CpuujAW0/hetg0FvRwu+wOUMP1buR4o=",
    "token": "mp0aHiAb8XDLjiBY5beGmJAkctTb6J2MxDLkPOCp4nQ="
}

响应示例:

加密:

{
    "encryptScript": "Ltpu/ZZTbiocIcu+I9zZYzSMZqgCLzRyAO8yC3a/r9TODzVdwonXke7/t9D2XgKxKFevmX04Dr12aq/NrvJE7EJTT6F7tPNuA8AE2uWzAb2DjuF4kS2G+GmeCv1qoe//QrwE8loDKNs5itlDtP26VOBiaTAuqwakuajsrO+c4xt2bCwuHc86LglLzjF1Lob6JZ9lh515DEQ4myaBBX8RN5IHSBB8UizdZecQZHc6CuKE+A4bMXrlRWGvWFbPcrc/k39dWQtDH5Qa410s+5DnI7+ozmCC2JriFEWdu0bA5OKK32smOg7zBLvDY5aJjsv+hW6X2Czwe9IXSPE1ueOGglemzy/1NLk/rkVQ4S+tilJVEj/l+noq8qrUQscgui9lDoqvhWmA3UjwKACKmvWyH2HIUtVN6tr7a6YeB2zjIeiv/ET9WSALBNPYpjsErpHNyPQ8wuy5RfGScpfv2tSRMdcINxM0wkwl4Nj7Rl6/kzxa7JGOq2MsnEvkxJj5aidCj3Z9mPtWaLXzFJraKysMS3GzY3BfVEtd0Uhp9qerZPdqzg4OhPxHOdeaQ7hHCwJQuRwd4gk/vlsCzXMSFBOZMElK95JILzg1QbIaoc8ekNw2+lsYNNXMS6NwVR1wxT9DPJefx931IFQFRrcZwoEiWFKCcJgfkBuxH7X3kaUtKSMFv+GJpoEiBOUNOEwgeYgftTZNfSF7ZBOgMy+1Zys+QrOOSNd0E9fhNguF4lrCZUnF+AjWgxo7U8gxfCul4YGiVZnWwJppFpLg33hk0QlWRlmuxi1K4XVmQBPN8dt+BM3Ta60g3/EZAoaGCDU9hZ61KJwOV0GNo6Vfz4EI1rx+gLukH3vOFGZTr0NwDLjmIJMREGg88EaA2FHq51TxMhsKawtTXoZbZ7cCKhT9RY3HZsF+cAwDl5iWm0jZ9VixH18VgMCfq/SwVi7j2YNlOH8+P+ClPudLvbfwYLYt1Ddr8JQCgcOlRSpn1S0hPmA29PTAomUKmyR+W/uxED8a6Z4XwmeQ5mWAZIGKHbQgEVouR7z7UV+qGN0Q3vjU3kxIl+HPyeU5hjsWGfdLk9awp9PnyvndJXQ5CiKoRl2OvB0Ht7T4XNCt+ebS4TuzcFqPoiZbEan7IUfpoNITFxum4iNwBRDOlSL5L2Fqs5xK5uHrjW5B8dSsHJVo4p3nz3ss9bs/zdZKg08k/kQfpWU9EzHzQcTk/bLsnRtbSKR3V4Pz3h8uosFuyTu/OOl/r6TzA42Ub93VL5ntOW25jMQQuaDxmkMDSMPI6qJh5lnLbYN1p0NvU60A2wmku8udeH46BmrjLqtliMbiZilgdCXseMnM"
}

解密:

{
    "code": "200",
    "msg": "请求成功",
    "success": true,
    "requestId": "127aaab06a0042008cc4997f22767151",
    "timestamp": "1704248730027",
    "sign": "83d0e467344d63f1c50d7e2e8e4d817c",
    "data": {
        "list": [
            {
                "bindCompanyId": "7526833571430866944",
                "bindDate": "2023-09-11T14:15:00+08:00",
                "bindStatus": 0,
                "createTime": "2023-09-04T16:46:44+08:00",
                "deviceSn": "J40-10-YJ-230302-0033",
                "deviceStatus": 1,
                "deviceType": "2",
                "updateTime": "2023-09-04T16:50:36+08:00"
            },
            ...
        ],
        "pageNo": 1,
        "pageSize": 10,
        "totalCount": 3,
        "totalPage": 1
    }
}

10. 设备告警数据

接口说明:

地址/cloud/open/openapi/device/alarm/info
描述设备告警数据
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
pageInteger否第几页(不填,默认1)
pageSizeInteger否页大小(不填,默认10)
createTimeLong否日期时间戳,之后的数据

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
pageNoInteger是页码
pageSizeInteger是页大小
totalCountInteger是记录总数
ListObject否数据集合
createTimeDate是创建时间
deviceSnString是设备SN
errorCodeString是错误码
eventNameString是事件名称
eventLevelInteger是告警级别:
1.普通事件
2.告警
3.故障
4.严重
5.非常严重
isActiveString是故障是否激活:
0:否(已处理)
1:是(未处理)
eventTypeNameString是告警类型
updateTimeDate是告警处理时间

请求示例:

{
    "encryptScript": "6BPT+S+rEwWo57aSN2TG69FuvbEEH775TireEoMPzkwZGr4wojAXXFqLD3swCzk/e0qmZG24tPzvfDpFaaVFAawvb6CdGY80fc4heExBRB5alrvCnRIdrP6lGsoGAKv7ZIc0XAQqYFnjY1z9zQE52g49sdGSe58thIcRmgycaxE=",
    "token": "uiLB/Ld/SnoL4gFW5cADBfajuSksOM2UMMznOyuJQnQ="
}

响应示例:

加密:

{
    "encryptScript": "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"
}

解密:

{
    "code": "200",
    "msg": "请求成功",
    "success": true,
    "requestId": "d82a68e5c0c446f7a6dcc0d97b53e073",
    "timestamp": "1704271497864",
    "sign": "b9e24a6fc876882f927e3a495586300a",
    "data": {
        "list": [
            {
                "createTime": "2023-12-18T20:31:45+08:00",
                "deviceSn": "J40-10-YJ-230302-0036",
                "errorCode": "21100042",
                "eventLevel": 2,
                "eventName": "定位初始化失败",
                "eventTypeName": "算法",
                "isActive": 1
            },
            {
                "createTime": "2023-12-18T20:25:03+08:00",
                "deviceSn": "J40-10-YJ-230302-0036",
                "errorCode": "31300000",
                "eventLevel": 3,
                "eventName": "program crash",
                "eventTypeName": "其他",
                "isActive": 1
            },
            ...
        ],
        "pageNo": 1,
        "pageSize": 10,
        "totalCount": 12,
        "totalPage": 2
    }
}

11. 批量设备基础数据查询

接口说明:

地址/cloud/open/openapi/device/query
描述批量设备基础数据查询
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
pageInteger否第几页(不填,默认1)
pageSizeInteger否页大小(不填,默认10)

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
pageNoInteger是页码
pageSizeInteger是页大小
totalCountInteger是记录总数
ListObject否数据集合
companyIdString是企业组织id
deviceCodeString是设备型号
deviceSnString是设备SN
deviceStatusint是设备在线状态(0.离线、1.在线
useStatusint是设备使用状态(0:购买,1:租赁,2:试用)
warrantyStatusint是保修状态 0:在保 1:在保(延保) 2:过保
warrantyTimeDate是保修截至时间
softwareVersionString否设备软件版本
hardwareVersionString否设备硬件版本
commStatusString否设备通信状态
runningStatusint否设备运行状态
cleanWaterint否设备清水量
wasteWaterint否设备污水量
remainingPowerint否设备剩余电量

请求示例:

{
    "encryptScript": "Wzk9TMySplDXtvPgNxTSXBdoKkDpTYSHDXxGNoTC6kyO8lcBt4JdyCp4xxgDM2pVHUXYEM9PCsUG0dbiYDEehtzh/Roj88evFq5tvgwy0+IdRlIBcnrfYzOPf4pDrLHJSDpRZy3LpxVSSYJ2DnWIy4HVWaKVDpzlfLtTOVDKYfU=",
    "token": "uiLB/Ld/SnoL4gFW5cADBfajuSksOM2UMMznOyuJQnQ="
}

响应示例:

加密:

{
    "encryptScript": "PoZdn5gqcOTkA2A7Pghq33qA1eCXbx6fzC5eIJ3PqCUwSlIjaj+XLTR7Ph69Xw582FEV/qgCAc/egpOqHsbjtftITq2OSbzGCyZLxR3YVFpEFakaXw1dISaayEvIU/ZCxr7z77mIlwndAE8nzhrNAzKgd1yMx5y49rPYwWSBmMHHasQlKlpkf7rWyKaWWU6V0iyrSoJHXDGkrY2BOvY+VA3lNZK8VMNeSBgJIfl9pAnGNxLuIwsWcVJnt6I7+wYujCP35Jbf6ubGbkJhkIo16udTtwY8Gg23lShzJOIqehv8Oju3jMOj7lDaJxTbsggXsu8mvj+IYPet5N7qqn7MrOHMUxNTuxEXFa3ua6c66XcULyjmZq9wULSsh9108IxlhTukVKgZl11E1ThxMUwu/itPzjBIRNF6V3PwqtefpUM8ehN7PDwpMDaUrHuZg86/3Bc1Y5H4X2jYWsJ/8opn+uhKkiWOAq37cO/YkPeztLid/t8Z9CT0stnSsmd5MjG5moO2kop5Usp0rab28H+NY9rXPjteFYSXXSwHFAWkm1sew1UbF4QqtVKI97VtDZR+03XBbNXg0QlL98phLnSnKMze1EMCpm0WqL8AZ0YvYK2QhJLjYCtuMwgumIr4TaQqhBZIaOfk98JZbj0TNiygJ66tvCoKwEmpyvkP/fgH02o="
}

解密:

{
    "code": "200",
    "msg": "请求成功",
    "success": true,
    "requestId": "3add8e53367b41c0971b34b1d87497a7",
    "timestamp": "1704276310608",
    "sign": "d9ae63eb84a017e8ee9fe27007b044bc",
    "data": {
        "list": [
            {
                "cleanWater": 0,
                "commStatus": "WIFI",
                "companyId": "7510386492197044224",
                "deviceCode": "J40",
                "deviceSn": "J40-10-YJ-230302-0036",
                "deviceStatus": 0,
                "remainingPower": 74,
                "runningStatus": 0,
                "useStatus": 0,
                "warrantyStatus": 0,
                "warrantyTime": "2024-10-12T19:30:45+08:00",
                "wasteWater": 0
            }
        ],
        "pageNo": 1,
        "pageSize": 10,
        "totalCount": 1,
        "totalPage": 1
    }
}

12. 任务暂停接口

接口说明:

地址/cloud/open/openapi/task/pause
描述任务暂停接口
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
taskUuidString是任务UUID
deviceSnString是设备SN

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
successedString是设备端接收到指令后返回的消息,不代表执行结果
msgBoolean是设备端是否接收到指令,不代表执行结果

请求示例:

{
    "encryptScript": "8xTuSrvNSPIYSTffHyKFX+9ZkLTi3U0q2OTkXAyQHazzpoWdYsp3Ng6csCSFKZaoT8Q9T6pwsYNP9sV9qrPTqXJDECh2Mfk3sF56hL6AqgooHjYlR1s6j2IDvn9oSPfvZ09pIgqnFsFMYLigwp6OCX+1cYD2K8bzRNaabI440EacYrqpTPg64CBYctV2TZ0aHppuy64nwGtFfMf1AFrgc9yoQsNwN+fVH/4fpEcG383RV0RpKgGaILJRD4L4QW1RR8u4bBTSfWxuJR5yOgUTZg==",
    "token": "noLZUWknqpwafvV2J4LP9lS+4N8JUwtN0xFbrDNZ5CU="
}

响应示例1:

加密:

{
    "encryptScript": "PoZdn5gqcOTkA2A7Pghq33qA1eCXbx6fzC5eIJ3PqCURYMvSjfgucP43d2UjRcR00ClWAgUf2UMevrkODjjil2Thhd6DEW/Dby4zPrhUMqpuwRfMeyIvuOUhgBvzAH22Wo74AYBOXRAawCzOmtEzpjO+4gC8JEV/AzCVhYYVKT1sf/cKbCIZ6QSRdp3TA76gigY/7uBbF4DRPyd0u6vNX51R1d9VKDdnCRbLQ+RECmAT1sfwBrwrE2OEUVYV0oUyHqL/DUAZFQ0nMQQ8a1qo4nh8D4ApxwUJv+On5sWVCyoLpC4kBfMNtRdWjfQlUAQ59fs2T9ES+eqNZjfN8m7Mylxbzg1+QDFBGFLnOLtf6HT1g4xDuhfPkw0VeGhcfL4ZBjkhXStKXa9WjdBZ3dmUFw=="
}

解密:

{
    "code": "200",
    "msg": "请求成功",
    "success": true,
    "requestId": "3279ee834e2a44fda17d65a4108b14dc",
    "timestamp": "1711420307908",
    "sign": "19206e34e9c15c4af2a1d5c403459e14",
    "data": {
        "msg": "successed",
        "successed": true
    },
    "taskUuid": "1012f5d5-dbac-4f08-be74-da0f09bd4252",
    "deviceSn": "J40-21-CP-SZ342952-0040"
}

响应示例2:

加密:

{
    "encryptScript": "QTkF2Tqu+iCy7a3byo3yHom9/wMTqrj09mqz9ssKj29EbPWmQFRwjb+FX000Zj3f76xl9qmH4LE4TYm2yPPc+8GmKk5wIKKkc3ZiHc8+ouMV9BaMikJy2hF1eRjf5lGCHVmFm7yz10TgmPagr9eTIlQOVCEDBxs2m4ss88catZI="
}

解密:

{
    "code": "30001",
    "msg": "设备无响应",
    "success": false,
    "timestamp": "1711420447492",
    "sign": "61387c4d5efbb0e64efa77aca9564f84"
}

13. 任务恢复接口

接口说明:

地址/cloud/open/openapi/task/resume
描述任务恢复接口
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
taskUuidString是任务UUID
deviceSnString是设备SN

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
successedString是设备端接收到指令后返回的消息,不代表执行结果
msgBoolean是设备端是否接收到指令,不代表执行结果

请求示例:

{
    "encryptScript": "8xTuSrvNSPIYSTffHyKFX+9ZkLTi3U0q2OTkXAyQHazzpoWdYsp3Ng6csCSFKZaoT8Q9T6pwsYNP9sV9qrPTqXJDECh2Mfk3sF56hL6AqgooHjYlR1s6j2IDvn9oSPfvZ09pIgqnFsFMYLigwp6OCX+1cYD2K8bzRNaabI440EacYrqpTPg64CBYctV2TZ0aHppuy64nwGtFfMf1AFrgc9yoQsNwN+fVH/4fpEcG383RV0RpKgGaILJRD4L4QW1RR8u4bBTSfWxuJR5yOgUTZg==",
    "token": "noLZUWknqpwafvV2J4LP9lS+4N8JUwtN0xFbrDNZ5CU="
}

响应示例1:

加密:

{
    "encryptScript": "PoZdn5gqcOTkA2A7Pghq33qA1eCXbx6fzC5eIJ3PqCURYMvSjfgucP43d2UjRcR00ClWAgUf2UMevrkODjjil2Thhd6DEW/Dby4zPrhUMqpuwRfMeyIvuOUhgBvzAH22Wo74AYBOXRAawCzOmtEzpjO+4gC8JEV/AzCVhYYVKT1sf/cKbCIZ6QSRdp3TA76gigY/7uBbF4DRPyd0u6vNX51R1d9VKDdnCRbLQ+RECmAT1sfwBrwrE2OEUVYV0oUyHqL/DUAZFQ0nMQQ8a1qo4nh8D4ApxwUJv+On5sWVCyoLpC4kBfMNtRdWjfQlUAQ59fs2T9ES+eqNZjfN8m7Mylxbzg1+QDFBGFLnOLtf6HT1g4xDuhfPkw0VeGhcfL4ZBjkhXStKXa9WjdBZ3dmUFw=="
}

解密:

{
    "code": "200",
    "msg": "请求成功",
    "success": true,
    "requestId": "3279ee834e2a44fda17d65a4108b14dc",
    "timestamp": "1711420307908",
    "sign": "19206e34e9c15c4af2a1d5c403459e14",
    "data": {
        "msg": "successed",
        "successed": true
    },
    "taskUuid": "1012f5d5-dbac-4f08-be74-da0f09bd4252",
    "deviceSn": "J40-21-CP-SZ342952-0040"
}

响应示例2:

加密:

{
    "encryptScript": "QTkF2Tqu+iCy7a3byo3yHom9/wMTqrj09mqz9ssKj29EbPWmQFRwjb+FX000Zj3f76xl9qmH4LE4TYm2yPPc+8GmKk5wIKKkc3ZiHc8+ouMV9BaMikJy2hF1eRjf5lGCHVmFm7yz10TgmPagr9eTIlQOVCEDBxs2m4ss88catZI="
}

解密:

{
    "code": "30001",
    "msg": "设备无响应",
    "success": false,
    "timestamp": "1711420447492",
    "sign": "61387c4d5efbb0e64efa77aca9564f84"
}

14. 任务停止接口

接口说明:

地址/cloud/open/openapi/task/stop
描述任务暂停接口
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
taskUuidString是任务UUID
deviceSnString是设备SN

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
successedString是设备端接收到指令后返回的消息,不代表执行结果
msgBoolean是设备端是否接收到指令,不代表执行结果

请求示例:

{
    "encryptScript": "8xTuSrvNSPIYSTffHyKFX+9ZkLTi3U0q2OTkXAyQHazzpoWdYsp3Ng6csCSFKZaoT8Q9T6pwsYNP9sV9qrPTqXJDECh2Mfk3sF56hL6AqgooHjYlR1s6j2IDvn9oSPfvZ09pIgqnFsFMYLigwp6OCX+1cYD2K8bzRNaabI440EacYrqpTPg64CBYctV2TZ0aHppuy64nwGtFfMf1AFrgc9yoQsNwN+fVH/4fpEcG383RV0RpKgGaILJRD4L4QW1RR8u4bBTSfWxuJR5yOgUTZg==",
    "token": "noLZUWknqpwafvV2J4LP9lS+4N8JUwtN0xFbrDNZ5CU="
}

响应示例1:

加密:

{
    "encryptScript": "PoZdn5gqcOTkA2A7Pghq33qA1eCXbx6fzC5eIJ3PqCURYMvSjfgucP43d2UjRcR00ClWAgUf2UMevrkODjjil2Thhd6DEW/Dby4zPrhUMqpuwRfMeyIvuOUhgBvzAH22Wo74AYBOXRAawCzOmtEzpjO+4gC8JEV/AzCVhYYVKT1sf/cKbCIZ6QSRdp3TA76gigY/7uBbF4DRPyd0u6vNX51R1d9VKDdnCRbLQ+RECmAT1sfwBrwrE2OEUVYV0oUyHqL/DUAZFQ0nMQQ8a1qo4nh8D4ApxwUJv+On5sWVCyoLpC4kBfMNtRdWjfQlUAQ59fs2T9ES+eqNZjfN8m7Mylxbzg1+QDFBGFLnOLtf6HT1g4xDuhfPkw0VeGhcfL4ZBjkhXStKXa9WjdBZ3dmUFw=="
}

解密:

{
    "code": "200",
    "msg": "请求成功",
    "success": true,
    "requestId": "3279ee834e2a44fda17d65a4108b14dc",
    "timestamp": "1711420307908",
    "sign": "19206e34e9c15c4af2a1d5c403459e14",
    "data": {
        "msg": "successed",
        "successed": true
    },
    "taskUuid": "1012f5d5-dbac-4f08-be74-da0f09bd4252",
    "deviceSn": "J40-21-CP-SZ342952-0040"
}

响应示例2:

加密:

{
    "encryptScript": "QTkF2Tqu+iCy7a3byo3yHom9/wMTqrj09mqz9ssKj29EbPWmQFRwjb+FX000Zj3f76xl9qmH4LE4TYm2yPPc+8GmKk5wIKKkc3ZiHc8+ouMV9BaMikJy2hF1eRjf5lGCHVmFm7yz10TgmPagr9eTIlQOVCEDBxs2m4ss88catZI="
}

解密:

{
    "code": "30001",
    "msg": "设备无响应",
    "success": false,
    "timestamp": "1711420447492",
    "sign": "61387c4d5efbb0e64efa77aca9564f84"
}

15. 机器人当前状态

接口说明:

地址/cloud/open/openapi/device/currentStatus
描述机器人当前状态
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
deviceSnString是设备SN号

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
cleanWaterint否设备清水量
currentMapUUIDString当前地图UUID
currentStatusInt否机器人当前状态(0:初始化 1:待机状态 2:自动运行 3:手动运行 4:补给 5:故障 6:休眠 7: OTA升级)
deviceSnString是设备SN
networkModeString否网络模式(WIFI、4G)
positionAngleDouble否设备正面指向角度
positionXDouble否设备在地图的x轴坐标
positionYDouble否设备在地图的Y轴坐标
wasteWaterint否设备污水量
remainingPowerint否设备剩余电量
taskUuidString否当前任务UUID
taskRunningStatusInt否任务状态(1.暂停 2.空闲 3.运行中)

请求示例:

{
    "encryptScript": "nTfOAkYOHlbB6Pbsr0Gl/BVM1B7wdBr2hqGnijPxALuHnsYRv4k/GMQOBRQf3E5J2dC2/xg1rjHUrURCaxLWeoE0tGc7rOr7HcOmk/j0xNQkJdLPMeTzj3MI1V7wKGyvZ09pIgqnFsFMYLigwp6OCX+1cYD2K8bzRNaabI440EZnXHCGD1Brzyqemnf0bP4XAdghphwz69wICZlvS2mmrA==",
    "token": "noLZUWknqpwafvV2J4LP9lS+4N8JUwtN0xFbrDNZ5CU="
}

响应示例:

加密:

{
    "encryptScript": "PoZdn5gqcOTkA2A7Pghq33qA1eCXbx6fzC5eIJ3PqCVro+0QVbAVsjRNXOhYigLzaXLPA8SDq8/etWBO2kH+xAgtQSwqzrbiT0Xm5vpzhwvBJKWTmRTah6Vwgm6epARRtT4m3jwPqzF2yZ1k0gkOqjyD+cRHiFBSQk8kRIZi/QWxnNOGqTzcQHCQYbCyHjiGmjN6llrHFI86O5V51p4uAPs9SRUIz0BB+/H2/3o10Bz4JjtKYp/KIjnoy3Ed5FTbWCQGrHF9hSayNZLv1BJr503k/+Kq+POWZi4w5AFEzeEp7FFKLU+6Hs23+1qf5GjaSaFQljc01Pz3Vl6HmABUKm4HJypRYrfKg22GkstjSYPTQXxqANPlursa+BjKJleqVJmjwFZjFKKaxN/ybpRWiUMJ2tgI6tSi3Vc04v98Dl7+JWvBGzPUGT1c6l8Ei1zso/T0kF+LnOcs6dJUlkxGk/YmcG1Nsy5upFB09UcSQ5u8vXKIM75PoClVFQYs3yftxqgoPJhEAKv3Yv9tabWEnBr11erHwvXOpPEYh965+eu+KXpElyYpNsD9NIYWlAKkqhjpfso3P59lDyB2GEOplPdkh5gzlksPNyJr0GMVXGOWIR3tXkA1KCambbIrwVPghAsW9amKvtca/W+5HjCDnBRPiPR2zTiMvdTCTJndbkC3wlMRbd3aDv//yQygVoF7b7pL1qkL6tHTub4EhW4hJ1Ho2Is0UtgyXIPQzFJqGXA="
}

解密:

{
    "code": "200",
    "msg": "请求成功",
    "success": true,
    "requestId": "d1af5c1a4e754c7c94777d66261ee951",
    "timestamp": "1711422563140",
    "sign": "2b2fc17d89d2cc04c67d742374b3e3a1",
    "data": {
        "cleanWater": 50,
        "currentMapUUID": "b62a8117-c092-4d12-a83c-0b1a667e69cd",
        "currentStatus": 1,
        "deviceSn": "J40-21-CP-SZ342952-0040",
        "networkMode": "WIFI",
        "positionAngle": 360.0,
        "positionX": 266.32440185546875,
        "positionY": 209.23837280273438,
        "remainingPower": 70,
        "taskRunningStatus": 2,
        "taskUuid": "ce4f5549-8f1d-45d3-8300-0333b29d0e3b",
        "wasteWater": 50
    },
    "deviceSn": "J40-21-CP-SZ342952-0040"
}

16. 获取地图列表接口

接口说明:

地址/cloud/open/openapi/map/query
描述获取地图列表数据
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
deviceSnString是设备SN号

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
createTimeDate是创建时间
deviceSnString是设备SN
extendParamsString否扩展参数
mapFileIdLong是地图压缩包文件ID
mapFilePathString是地图压缩包文件路径
mapHighInt是地图高度(px),为0表示设备端未传入
mapWidthInt是地图宽度(px),为0表示设备端未传入
mapStatusInt是地图状态(0.启用 1.禁用 2.已删除 3.修改后同步中 4.修改后同步失败)
mapUuidString是地图UUID
mapIdLong是地图ID
mapImagePathString是地图图像文件路径
mapImageUrlString是地图图像Url地址
mapNameString是地图名称
sourceIdString是设备生成的地图ID(32位字符)
updateTimeDate是更新时间

请求示例:

{
    "encryptScript": "081WPeun6tJ8ZmOj/jRA3Ggd0Nq8ByMPKFqctyZRTvCOyAkyP5spo9wQaG6l+znnJlzL0G3Ok2tONumztge0pnDUqCrnpiqAqkZLnL/euL9By/A9avqQdFoWEzTIIEQ26uKoIz2RW9syxu9bwfI1zhnIpD/NTnA8zt6eg255XVI2gYQ84q6KBRkulG2LovYJsgNKQ0n7ob0KA46XykkwMA==",
    "token": "noLZUWknqpwafvV2J4LP9lS+4N8JUwtN0xFbrDNZ5CU="
}

响应示例:

加密:

{
    "encryptScript": "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"
}

解密:

{
    "code": "200",
    "msg": "请求成功",
    "success": true,
    "requestId": "2c9497b1e28c4d56a37f3d21964b4602",
    "timestamp": "1711434034933",
    "sign": "5eb1f067df34f917aa554da5e9ee0dcd",
    "data": {
        "list": [
            {
                "createTime": "2024-03-26T14:04:38+08:00",
                "deviceSn": "J40-22-YJ-342144-1180",
                "mapFileId": "8147803001385705479",
                "mapFilePath": "user/root/business/2024-3/maps/34ecff21e5d94cd1/",
                "mapHigh": 551,
                "mapId": "8147803001385959424",
                "mapImagePath": "user/root/business/2024-3/maps/34ecff21e5d94cd1/door2.png",
                "mapImageUrl": "http://yjh-oss-bucket-test.oss-cn-shenzhen.aliyuncs.com/user/root/business/2024-3/maps/34ecff21e5d94cd1/door2.png?Expires=1711436679&OSSAccessKeyId=LTAI5tLzGj41xXeMUWM57799&Signature=4TGJUFIPyCRbI2exKCeMg6u1Xio%3D",
                "mapName": "door2",
                "mapStatus": 0,
                "mapUuid": "8147803001385959424",
                "mapWidth": 557,
                "sourceId": "8147803001385959424",
                "updateTime": "2024-03-26T14:08:49+08:00",
            },
            ...
        ],
        "pageNo": 1,
        "pageSize": 10,
        "totalCount": 16,
        "totalPage": 2
    },
    "deviceSn": "J40-22-YJ-342144-1180"
}

17. 获取对应地图信息接口

接口说明:

地址/cloud/open/openapi/map/detail
描述获取对应地图文件信息
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
mapIdLong是地图id

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
createTimeDate是创建时间
deviceSnString是设备SN
extendParamsString否扩展参数
mapFileIdLong是地图压缩包文件ID
mapFilePathString是地图压缩包文件路径
mapHighInt是地图高度(px),为0表示设备端未传入
mapWidthInt是地图宽度(px),为0表示设备端未传入
mapStatusInt是地图状态(0.启用 1.禁用 2.已删除 3.修改后同步中 4.修改后同步失败)
mapUuidString是地图UUID
mapIdLong是地图ID
mapImagePathString是地图图像文件路径
mapImageUrlString是地图图像Url地址
mapNameString是地图名称
sourceIdString是设备生成的地图ID(32位字符)
updateTimeDate是更新时间
mapInfoJsonUrlString是map_info.json文件url

请求示例:

{
    "encryptScript": "axkQ/QP3INFui6hOOcIBgsgZTpQRo11bXVwNrb/q4il0qDOni4O6Q1GShtAbKbI4edDBr4LPltQh+57FEl+3dgdyJI1Nqloic4j/pHuQmIhWPpkgplOS2SLdaMdKzLQI1I5s2ttnA9NBLQOg7+DW/FDYCqwEwyNp/VoSJPQ4qwn0BQ4Yh5jt/15NrV4XgsVGHEJRtCFGVcLLoiewHAcz/A==",
    "token": "noLZUWknqpwafvV2J4LP9lS+4N8JUwtN0xFbrDNZ5CU="
}

响应示例:

加密:

{
    "appId": "59c911c36ace1127",
    "encryptScript": "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"
}

解密:

{
    "code": "200",
    "msg": "请求成功",
    "success": true,
    "requestId": "f5956794ac124777a88b410ee5e1cad4",
    "timestamp": "1712570611195",
    "sign": "7c41fdd9adbcc76b4953040487d30763",
    "data": {
        "companyId": "8169052295511900160",
        "createTime": "2024-04-02T19:42:22+08:00",
        "deviceSn": "J40-23-CP-343457-2479",
        "extendParams": "{\n\t\"deviceUpdateTs\":1712058131854,\n\t\"mapHigh\":547,\n\t\"mapName\":\"map20240401\",\n\t\"mapWidth\":957,\n\t\"md5\":\n\t{\n\t\t\"map20240401.pbstream\":\"9660b9196a9a5fe9a2f77d627779f333\",\n\t\t\"map20240401.pgm\":\"697fbd41d78b32139dcbca17e4aa4f4b\",\n\t\t\"map20240401.png\":\"4f66f6d8f7f2e9dc5a295d4f17762727\",\n\t\t\"map20240401.yaml\":\"89c18ed860ce0411e4e35fc238c5d72c\",\n\t\t\"map_info.json\":\"9a928f5c7fd3a1b43b383e0a39416b6b\",\n\t\t\"small_database.yaml\":\"e04fac87a18690bbb7b256b8628ba750\",\n\t\t\"verify_info.txt\":\"d751713988987e9331980363e24189ce\"\n\t},\n\t\"sourceId\":\"87bd00cd-c3c4-4c2b-8318-3447003e6443\"\n}\n",
        "isUsing": false,
        "mapFileId": "8169279722620133376",
        "mapFilePath": "user/root/business/2024-4/maps/64a6652f90a34586/",
        "mapHigh": 547,
        "mapId": "8169280066217549825",
        "mapImagePath": "user/root/business/2024-4/maps/64a6652f90a34586/map20240401.png",
        "mapImageUrl": "http://yjh-oss-bucket-aliyun.oss-cn-shenzhen.aliyuncs.com/user/root/business/2024-4/maps/64a6652f90a34586/map20240401.png?Expires=1712573629&OSSAccessKeyId=LTAI5tLzGj41xXeMUWM57799&Signature=QJafXUKASerRZDyyUysl%2FgEF1Cw%3D&ts=1712570611156",
        "mapInfoJsonUrl": "http://yjh-oss-bucket-aliyun.oss-cn-shenzhen.aliyuncs.com/user/root/business/2024-4/maps/64a6652f90a34586/map_info.json?Expires=1712573629&OSSAccessKeyId=LTAI5tLzGj41xXeMUWM57799&Signature=UmAPxfg0pOslb12VWI2qOCJ29CE%3D&ts=1712570611161",
        "mapName": "map20240401",
        "mapStatus": 0,
        "mapUuid": "87bd00cd-c3c4-4c2b-8318-3447003e6443",
        "mapWidth": 957,
        "sourceId": "87bd00cd-c3c4-4c2b-8318-3447003e6443",
        "updateTime": "2024-04-02T19:42:22+08:00"
    },
    "mapId": "8169280066217549825"
}

18. 远程下发清扫路径接口

接口说明:

地址/cloud/open/openapi/device/clean
描述下发清扫路径接口
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
bodyStrString是请求数据(JSONObject转String格式,见下表)
deviceSnString是设备SN
bodyStr String格式:

{"mapUuid":"r23guiqf1r389gfqufgwr13fiyvqw","mapName":"醉酒的玫瑰","taskName":"","cleanMode":1,"cleanTimes":1,"strength":1,"path":[{"x":382.35454313964846,"y":419.05377470092776},{"x":382.29396313964844,"y":417.0547147009277},{"x":382.2333831396484,"y":415.0556347009277},{"x":382.17280313964847,"y":413.05654470092776},{"x":382.11224313964846,"y":411.05747470092774},{"x":382.05164313964843,"y":409.0584047009277},{"x":381.99107313964845,"y":407.05929470092775}]}

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
successedString是设备端接收到指令后返回的消息,不代表执行结果
msgBoolean是设备端是否接收到指令,不代表执行结果

请求示例:

{
    "encryptScript": "6BPT+S+rEwWo57aSN2TG67ByPhUfCkP2eVTyc0Hoi4lZM/I4Qq5N3eANAXxbrqg6LrgEnWhdakUELiR6JXJsrRRUHTYIe9+1iAyTNXODgTLB/pCxlspyPETOOHZuecZf9qcYtcg2Rtsf0KvngvOjtyXiodTGqDJJuLnaQ288g6TtICX4qfwubKLH1bBOU2vRLSNi1p6sfOr3LmlzLv/As0JjpE7jfo4waBlE0SVSfY2jR1N6iHobgsfXW1kC83cn1085MQw/3PXU7L5XZXKpAKg3ra9oCYouU4gbBaPAHH36wutYuRcV6UfcUt7YUboZ+YdUJnJjSaUVmravo94FS9SHvKyoYsm9hgjQoTCogrndQvOS0dCP2YtBzqIe10yiYOgMXWQdbd2Gplr6kxFtnC5gZuAFCTQaHYYn9uQoGhx6gQkw8reetzuN6So8uQitignBl+PKc2BFidQwVFDEsqgp1TiBeraHe5wCW4XwZao/4Uhks9Y208YvAIZ636e6mJoHxibtAItC/WRmpHouJ2ECkrbOGtQl+SmUEzh4pAlN9xmw2o9G8O93b0bzcSHsM71vZOYhSwA72oE2do0AnWz5+M3sSroIY6ldGHKp1J/gWhMlBy/e7RU2U5bcDs7IElAiYujC8U+4mmperS60qESoZ0X7vWydahOui6Y2t1lk8JcD2KZxDp4bDyzsbO1Jy6dP0ygJQJdy+z7roIZsFWFt4IySMKBfgck/MFxJpzp6KCefqT3KukUI8MSTl/JubGjpilgqYQwsQCEJJKYe6ktI2qLpVJSko6LrRXP9aHshQ7qA8LSJCHa9YJ1K3qL1hr9+DNgK27MkCTA8K9s8vxp7U5YmQmnZGOy9iYxm2hP1g4xDuhfPkw0VeGhcfL4ZXtzqiC5CDx1mPb2c2N9w0A==",
    "token": "noLZUWknqpwafvV2J4LP9lS+4N8JUwtN0xFbrDNZ5CU="
}

响应示例1:

加密:

{
    "encryptScript": "PoZdn5gqcOTkA2A7Pghq33qA1eCXbx6fzC5eIJ3PqCURYMvSjfgucP43d2UjRcR00ClWAgUf2UMevrkODjjil2Thhd6DEW/Dby4zPrhUMqpuwRfMeyIvuOUhgBvzAH22Wo74AYBOXRAawCzOmtEzpjO+4gC8JEV/AzCVhYYVKT1sf/cKbCIZ6QSRdp3TA76gigY/7uBbF4DRPyd0u6vNX51R1d9VKDdnCRbLQ+RECmAT1sfwBrwrE2OEUVYV0oUyHqL/DUAZFQ0nMQQ8a1qo4nh8D4ApxwUJv+On5sWVCyoLpC4kBfMNtRdWjfQlUAQ59fs2T9ES+eqNZjfN8m7Mylxbzg1+QDFBGFLnOLtf6HT1g4xDuhfPkw0VeGhcfL4ZBjkhXStKXa9WjdBZ3dmUFw=="
}

解密:

{
    "code": "200",
    "msg": "请求成功",
    "success": true,
    "requestId": "3279ee834e2a44fda17d65a4108b14dc",
    "timestamp": "1711420307908",
    "sign": "19206e34e9c15c4af2a1d5c403459e14",
    "data": {
        "msg": "successed",
        "successed": true
    }
}

响应示例2:

加密:

{
    "encryptScript": "QTkF2Tqu+iCy7a3byo3yHom9/wMTqrj09mqz9ssKj29EbPWmQFRwjb+FX000Zj3f76xl9qmH4LE4TYm2yPPc+8GmKk5wIKKkc3ZiHc8+ouMV9BaMikJy2hF1eRjf5lGCHVmFm7yz10TgmPagr9eTIlQOVCEDBxs2m4ss88catZI="
}

解密:

{
    "code": "30001",
    "msg": "设备无响应",
    "success": false,
    "timestamp": "1711420447492",
    "sign": "61387c4d5efbb0e64efa77aca9564f84"
}

19. 目标点移动接口

接口说明:

地址/cloud/open/openapi/device/move
描述目标点移动接口
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
bodyStrString是请求数据(JSONObject转String格式,见下表)
deviceSnString是设备SN
bodyStr String格式:

{"destination":{"angle":0.0,"gridX":282.0,"gridY":131.0},"mapName":"w偶就不信了","mapUuid":"d4a38b3a-c54a-4c3b-97b1-6e2ab63e21cb"}

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
successedString是设备端接收到指令后返回的消息,不代表执行结果
msgBoolean是设备端是否接收到指令,不代表执行结果

请求示例:

{
    "encryptScript": "8xTuSrvNSPIYSTffHyKFX+9ZkLTi3U0q2OTkXAyQHazzpoWdYsp3Ng6csCSFKZaoT8Q9T6pwsYNP9sV9qrPTqXJDECh2Mfk3sF56hL6AqgooHjYlR1s6j2IDvn9oSPfvZ09pIgqnFsFMYLigwp6OCX+1cYD2K8bzRNaabI440EacYrqpTPg64CBYctV2TZ0aHppuy64nwGtFfMf1AFrgc9yoQsNwN+fVH/4fpEcG383RV0RpKgGaILJRD4L4QW1RR8u4bBTSfWxuJR5yOgUTZg==",
    "token": "noLZUWknqpwafvV2J4LP9lS+4N8JUwtN0xFbrDNZ5CU="
}

响应示例1:

加密:

{
    "encryptScript": "PoZdn5gqcOTkA2A7Pghq33qA1eCXbx6fzC5eIJ3PqCURYMvSjfgucP43d2UjRcR00ClWAgUf2UMevrkODjjil2Thhd6DEW/Dby4zPrhUMqpuwRfMeyIvuOUhgBvzAH22Wo74AYBOXRAawCzOmtEzpjO+4gC8JEV/AzCVhYYVKT1sf/cKbCIZ6QSRdp3TA76gigY/7uBbF4DRPyd0u6vNX51R1d9VKDdnCRbLQ+RECmAT1sfwBrwrE2OEUVYV0oUyHqL/DUAZFQ0nMQQ8a1qo4nh8D4ApxwUJv+On5sWVCyoLpC4kBfMNtRdWjfQlUAQ59fs2T9ES+eqNZjfN8m7Mylxbzg1+QDFBGFLnOLtf6HT1g4xDuhfPkw0VeGhcfL4ZBjkhXStKXa9WjdBZ3dmUFw=="
}

解密:

{
    "code": "200",
    "msg": "请求成功",
    "success": true,
    "requestId": "3279ee834e2a44fda17d65a4108b14dc",
    "timestamp": "1711420307908",
    "sign": "19206e34e9c15c4af2a1d5c403459e14",
    "data": {
        "msg": "successed",
        "successed": true
    }
}

响应示例2:

加密:

{
    "encryptScript": "QTkF2Tqu+iCy7a3byo3yHom9/wMTqrj09mqz9ssKj29EbPWmQFRwjb+FX000Zj3f76xl9qmH4LE4TYm2yPPc+8GmKk5wIKKkc3ZiHc8+ouMV9BaMikJy2hF1eRjf5lGCHVmFm7yz10TgmPagr9eTIlQOVCEDBxs2m4ss88catZI="
}

解密:

{
    "code": "30001",
    "msg": "设备无响应",
    "success": false,
    "timestamp": "1711420447492",
    "sign": "61387c4d5efbb0e64efa77aca9564f84"
}

20. 任务过程数据接口

接口说明:

地址/cloud/open/openapi/task/process
描述任务过程数据接口
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
taskUuidString是任务UUID
deviceSnString是设备SN

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
angleDouble是角度
currentCleanModeInteger是当前清洁模式:
0.CLEAN_STANDBY 无意义
1.SCRUB_FLOOR 扫地
2.SUCK_DUST 吸尘
3.MOP_FLOOR 拖地
4.SCRUB_AND_WASH 扫洗(普通、深度)
5.SCRUB_AND_MOP 扫拖
6.PATROL_CLEAN 巡逻清洁
7.OUTDOOR_CLEAN 室外清洁
8.STOP_CLEAN
currentPhaseInteger是任务阶段:
1.正在前往任务区域
2.正在开启清扫部件
3.清扫中
4.正在关闭清扫部件
5.拖地模式自清洁中
6.补扫中
10.正在前往充电
11.对接中
12.补给中
13.下桩
16.正在前往打包点
17.打包中
deviceSn是设备SN
estimatedTimeOfCleanDate是预计完成时间
gridPositionObject是栅格化坐标
xDouble是x坐标
yDouble是y坐标
progressFloat是清洁进度
progressImageString否上传完一张底图后不再传该字段,后续由使用方根据坐标来渲染
startTimeDate是开始时间:ms
taskNameString是任务名称
taskTypeInteger是任务类型:0:普通任务; 1:投掷垃圾;2:补给任务;3:导航任务
taskUuidString是任务UUID
timeLong是清洁时间:ms

请求示例:

{
    "encryptScript": "nOiC+ZwK6k7+//OyY5IHCx74J9Z+CA4DkMBEp8ALteXAk9l0fbsGi0fzsHzXtHyyBRp5RcfGeJ83TdLuVgQKYP6mwdDWk3zQ8ZAGT/gKg6YUPggw86Wgq9A+VWpHyAuX6uKoIz2RW9syxu9bwfI1zuuUeSobXRVyU4HO6boEhZA8OJagU0d3PdwZtcXbgfeN1KhGmlma137zE/LQIwOAAw91lFEm1MlrGwrrxNOCx7JnXHCGD1Brzyqemnf0bP4Xhkphs1EjHaGK7hIKVP0/CA==",
    "token": "gWDrww3cyxCrMkyfBs+AEb6IG8UkisIEygY7ou6lIc0="
}

响应示例:

加密:

{
    "encryptScript": "PoZdn5gqcOTkA2A7Pghq33qA1eCXbx6fzC5eIJ3PqCU8yDCRZvLJVJgs9zj2TlUkaU9MCf7A/Nbe8FuVwi5NbdgJ1BjjH/mJBRUlxBvitQw+TAYPpRp1aH/bL4qGM8s5S4Sh3hhFresm7JbSq8uwVkQR8GovB4wsjcOgJHGkOVLFtbUDBOSq56RX2sfQ+DApPpWMp8Xq9N3N2CIfuobCMePlThQXzz6bx+6gbsCNtMkfHOUuGeXXksBft/RUMmQ7O7GRKQjiQfbb611wmFeT6oPkZlHBYJavc252VdmahMZqlfmaJhC5R91yGlP5LYeYNERLJbraNeTLQIb5jeCkqo5bEzDC/HbU99KDWhWDHpuud7tcE6HJg83oE8eG1lj0/FwPFKoDc7loZqaDx5na9ch9izc0OFMK38cnoJ9fH107EPQxQuWpPFfBErdNi4pfSrNxvelIq0m40l1XBxhGpvvzVc2FzvTAtBEt1sAVkDizHOP4XMTNbKaWjN91diV9qjg3AEx9qcB7vRlT3IoNFfrd6WkVOCxBp49RXdnKMnxdCaqloEiqbd361hq3AVX0mAKT/+qt3Qi7QbSIBkMMmIrblp9SL2FYajxIGqRkUwvZMXOhuvPKhDrpVm1H/8M2eomLBCoeR27C0d8YOcX1vmZ8zHiMWPHAu3AZmhDoINDAbWZLw2YCOwk4UK8+Hvp64x/+nU8+5Oz0TctW4Poy4pXvswf5AyrmZnUev0kLeJhoBPrQQOzuAJMVjOL0vnxuq88vZL5JY7AezvkcXVSX2G34DzoSPn1wIoCSgrtLMzhjAEAum0SnUxugc36j4GBRv2Kr2wu97H4g9KkYPSnQ1loFEsOAOt3nOcyWwScnS+huxNTQnA+3xayOuQr0XjKTnA9UXuMHS6ygAUO6YmQ45ndyS1XWYsCKtJwobHgDMtAYH86xGkTnQXpHddJFx0SnO7R5ysZ8X42o2zVdo8N+OXoSKogZ6c7svNZj5D37HJJ7YQ4grCW98VcHr2GzT/blhBD5gNCdmvurHB2+900PIyruRYIX6UN/ixLYDG9SGO0Y+QdUSYIJwIUWA2zMoTBF6uKoIz2RW9syxu9bwfI1zuuUeSobXRVyU4HO6boEhZA8OJagU0d3PdwZtcXbgfeN1KhGmlma137zE/LQIwOAAw91lFEm1MlrGwrrxNOCx7JnXHCGD1Brzyqemnf0bP4XJG1VtvHCj0Y3pg/AmLjBiQ=="
}

解密:

{
    "code": "200",
    "msg": "请求成功",
    "success": true,
    "requestId": "1ad90ac38088493a80d677c0745deeb3",
    "timestamp": "1711599190886",
    "sign": "13cd6d12f11ad33fd6ebeec0fddd4f23",
    "data": {
        "angle": 180.87579345703125,
        "currentCleanMode": 1,
        "currentPhase": 3,
        "deviceSn": "J40-22-YJ-342144-1180",
        "estimatedTimeOfClean": "1970-01-01T08:02:05.293+08:00",
        "gridPosition": {
            "x": 258.56521606445312,
            "y": 314.22280883789062
        },
        "progress": 41.365463,
        "progressImage": "http://yjh-oss-bucket-aliyun.oss-cn-shenzhen.aliyuncs.com/user/root/business/realtimeMap/J40-22-YJ-342144-1180.png?Expires=1711600816&OSSAccessKeyId=LTAI5tLzGj41xXeMUWM57799&Signature=KMENoOgN9xZGYakOIBXugZqApZ8%3D&timestamp=1711597216168",
        "startTime": "2024-03-28T11:38:47.809+08:00",
        "taskName": "2-区域1",
        "taskType": 0,
        "taskUuid": "1012f5d5-dbac-4f08-be74-da0f09bd4252",
        "time": 88392
    },
    "taskUuid": "1012f5d5-dbac-4f08-be74-da0f09bd4252",
    "deviceSn": "J40-22-YJ-342144-1180"

21. 任务触发接口

接口说明:

地址/cloud/open/openapi/task/start
描述任务触发接口
MethodPOST
字段名称类型是否必填备注
tokenString是调用token接口获取
encryptScriptString是请求参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
requestIdString是每次请求的唯一标识,由发起方生成,长度固定为32个字符,只能数字或字母。
timestampString是当前请求时间戳,精确到毫秒,方便诊断网络延时
signString是使用开发者账号的密钥生成的签名,云平台服务端会用同样的算法进行签名计算并比较,签名不一致的请求会被拒绝
taskUuidString是任务UUID,多个任务时,使用逗号“,”隔开,如:“xxx,yyy,..."
deviceSnString是设备SN

响应说明:

字段名称类型是否必填备注
encryptScriptString是返回参数的密文

encryptScript 参数解密如下:

字段名称类型是否必填备注
codeString是响应码,200成功,其他失败
msgString是响应信息
successBoolean是成功标志,成功true, 失败false
requestIdString是请求参数的requestId
timestampString是时间戳
signString是签名
dataObject
successedString是设备端接收到指令后返回的消息,不代表执行结果
msgBoolean是设备端是否接收到指令,不代表执行结果

请求示例:

{
    "encryptScript": "8xTuSrvNSPIYSTffHyKFX+9ZkLTi3U0q2OTkXAyQHazzpoWdYsp3Ng6csCSFKZaoT8Q9T6pwsYNP9sV9qrPTqXJDECh2Mfk3sF56hL6AqgooHjYlR1s6j2IDvn9oSPfvZ09pIgqnFsFMYLigwp6OCX+1cYD2K8bzRNaabI440EacYrqpTPg64CBYctV2TZ0aHppuy64nwGtFfMf1AFrgc9yoQsNwN+fVH/4fpEcG383RV0RpKgGaILJRD4L4QW1RR8u4bBTSfWxuJR5yOgUTZg==",
    "token": "noLZUWknqpwafvV2J4LP9lS+4N8JUwtN0xFbrDNZ5CU="
}

响应示例1:

加密:

{
    "encryptScript": "PoZdn5gqcOTkA2A7Pghq33qA1eCXbx6fzC5eIJ3PqCURYMvSjfgucP43d2UjRcR00ClWAgUf2UMevrkODjjil2Thhd6DEW/Dby4zPrhUMqpuwRfMeyIvuOUhgBvzAH22Wo74AYBOXRAawCzOmtEzpjO+4gC8JEV/AzCVhYYVKT1sf/cKbCIZ6QSRdp3TA76gigY/7uBbF4DRPyd0u6vNX51R1d9VKDdnCRbLQ+RECmAT1sfwBrwrE2OEUVYV0oUyHqL/DUAZFQ0nMQQ8a1qo4nh8D4ApxwUJv+On5sWVCyoLpC4kBfMNtRdWjfQlUAQ59fs2T9ES+eqNZjfN8m7Mylxbzg1+QDFBGFLnOLtf6HT1g4xDuhfPkw0VeGhcfL4ZBjkhXStKXa9WjdBZ3dmUFw=="
}

解密:

{
    "code": "200",
    "msg": "请求成功",
    "success": true,
    "requestId": "3279ee834e2a44fda17d65a4108b14dc",
    "timestamp": "1711420307908",
    "sign": "19206e34e9c15c4af2a1d5c403459e14",
    "data": {
        "msg": "successed",
        "successed": true
    },
    "taskUuid": "1012f5d5-dbac-4f08-be74-da0f09bd4252,...",
    "deviceSn": "J40-21-CP-SZ342952-0040"
}

响应示例2:

加密:

{
    "encryptScript": "QTkF2Tqu+iCy7a3byo3yHom9/wMTqrj09mqz9ssKj29EbPWmQFRwjb+FX000Zj3f76xl9qmH4LE4TYm2yPPc+8GmKk5wIKKkc3ZiHc8+ouMV9BaMikJy2hF1eRjf5lGCHVmFm7yz10TgmPagr9eTIlQOVCEDBxs2m4ss88catZI="
}

解密:

{
    "code": "30001",
    "msg": "设备无响应",
    "success": false,
    "timestamp": "1711420447492",
    "sign": "61387c4d5efbb0e64efa77aca9564f84"
}

三. Maven引入

<dependency>  
   	<groupId>cn.hutool</groupId> 
 	<artifactId>hutool-all</artifactId>       
	<version>5.6.3</version>  
</dependency>

四. 错误码

错误码错误描述
0参数缺失
200请求成功
400系统错误
10000签名错误
10001appId未注册
10002token参数缺失
10003用户信息已被冻结
10004无效token或token过期,请重新获取
10005参数不正确
20000IP [%s] 不在授权白名单内
20001请求过期
20002未授权接口,非法访问
30000设备不在线
30001设备无响应
30002设备繁忙
30003设备处于休眠状态,无法执行
40000地图信息不存在
Built with