A-错误码说明与使用

一、前提说明

此错误码仅对v6版本 XAPP SDK 适用

二、新旧错误码对照表

由于旧的错误码为具体的某个流程,而且一般情况下就是失败的错误码并没有更多的信息,所以旧的错误码实际可能是对应新的多个错误码,以下是原错误码与新错误码之间的一些对照关系。

新错误码与旧错误码的差异主要如下:

  • 旧错误码为枚举类型数据
  • 新错误码均为整型数据,且每一个错误码明确代表了一种错误情况

当在升级 XAPP SDK 版本使用时出现无法处理的错误码可以在以下对照表中查找对应的解决方案

旧错误码中存在一些错误码是多种可能错误的复合体,而新错误码将具体返回当前操作中任何导致操作失败的错误码(可能来自设备,也可能是数据错误,或者内部错误),所以存在一个旧错误码可能对应某个操作中多个新的错误码,这是正常的。

注意:所有新错误码都是XLinkErrorCodes类下的整型常量,以下省略该类的引用

旧错误码 新错误码 对应模块/说明备注
所有ERROR_API_开头的错误码 对应的ERROR_API_xxx新错误码 ERROR_API_开头的为API相关的错误码,名称与意义不变
ERROR_UNKNOWN_CORE_ERROR_CODE ERROR_UNKNOWN 未知错误
ERROR_API_UNKNOWN_ERROR ERROR_API_UNKNOWN 未知API错误
ERROR_RUNTIME_EXCEPTION ERROR_OTHER_EXCEPTION 其它来源错误
ERROR_UNSUPPORTED_PROTOCOL_VERSION PROTOCOL_VERSION_NOT_SUPPORTED 协议版本不支持
ERROR_TASK_TIMEOUT TASK_TIMEOUT 任务超时
ERROR_TASK_CANCELED TASK_CANCELED 任务取消
ERROR_TASK_DEPENDENCE_TIMEOUT TASK_DEPENDENCE_TIMEOUT 任务依赖超时,暂不抛出该错误
ERROR_USER_NOT_AUTHORIZED - 该错误为API返回的没有权限错误,新错误码不再将权限问题转换返回,直接返回对应API错误码
ERROR_DEVICE_NOT_CONNECTED_CLOUD DEVICE_FAIL_CLOUD_NOT_CONNECTED 设备未进行云端连接,可能在设备操作时返回(如设置数据端点)
ERROR_DEVICE_NOT_CONNECTED_LOCAL DEVICE_FAIL_LOCAL_NOT_CONNECTED 设备未进行本地连接,可能在设备操作时返回(如设置数据端点)
ERROR_LOCAL_PAIRING_LIMIT_REACHED PAIRING_LOCAL_FAIL_REACH_PAIRING_LIMIT 本地配对次数达到上限(参考以上解决方案)
ERROR_AUTH_CODE_NOT_PROVIDED ERROR_LOCAL_SCAN_DEVICE_EMPTY_PID ERROR_LOCAL_OPEN_SESSION_INVALID_PARAM ERROR_LOCAL_PAIRING_INVALID_PARAM ERROR_LOCAL_DEVICE_NOT_SET PARAMS_NOT_EXIST 参数未提供
ERROR_INVALID_PARAMS PARAMS_INVALID 无效参数
ERROR_CLOUD_SET_DATA_POINT_FAIL - 对应设置云端数据端点中所有可能出现的错误(参考以下操作或APP-SDK错误码)
ERROR_LOCAL_SET_DATA_POINT_FAIL - 对应设置本地数据端点中所有可能出现的错误(参考以下操作或 API)
ERROR_CLOUD_GET_DATA_POINT_FAIL - 对应获取云端数据端点中所有可能出现的错误(参考以下操作或 API)
ERROR_LOCAL_GET_DATA_POINT_FAIL - 对应获取本地数据端点中所有可能出现的错误(参考以下操作或 API)
ERROR_CLOUD_SUBSCRIBE_DEVICE_FAIL - 对应在订阅设备操作中所有可能出现的错误(参考以下操作或 API)
ERROR_LOCAL_PAIRING_FAIL ERROR_LOCAL_PAIRING_HANDSHAKE_FAIL - 对应添加/订阅设备流程中所有可能出现的错误(参考以下操作或 API)
ERROR_CLOUD_GET_TICKET_FAIL ERROR_CLOUD_CONNECT_CLOUD_FAIL - 不再支持该错误,可能对应TASK_TIMEOUT或其它通用性错误
ERROR_NONE ERROR_CLOUD_DISCONNECT_CLOUD_FAIL ERROR_CLOUD_DEVICE_OPEN_SESSION_FAIL ERROR_CLOUD_DEVICE_CLOSE_SESSION_FAIL ERROR_LOCAL_CLOSE_SESSION_FAIL ERROR_LOCAL_OPEN_SESSION_FAIL ERROR_LOCAL_UNPAIRING_FAIL ERROR_LOCAL_DEVICE_NOT_BOUND ERROR_LOCAL_GET_DEVICE_INFO_FAIL - 不再抛出该错误(或者该错误不被开发者感知)
ERROR_LOCAL_SESSION_ENCRYPT_FAIL ERROR_LOCAL_SESSION_DECRYPT_FAIL PROTOCOL_FAIL_ENCRYPT_SESSION PROTOCOL_FAIL_DECRYPT_SESSION 通讯异常错误,正常情况下不会抛出,但在设备操作时可能会抛出异常
ERROR_MQTT_CLIENT_DISCONNECTED ERROR_MQTT_CLIENT_INNER_ERROR ERROR_MQTT_CLIENT_INVALID_PARAMS ERROR_MQTT_CLIENT_NOT_CONNECTED_BROKER MQTT_FAIL_CLIENT_DISCONNECTED MQTT_FAIL_CLIENT_INNER_ERROR MQTT_FAIL_CLIENT_PARAMS_NOT_EXIST 内部错误,不应该抛出

新旧错误码的对照关系仅仅是用于提供从旧错误码快速对应到新的相关错误的参考途径,请重点根据下述错误码分类进行错误码处理

三、基础错误码

基础错误码的来源可能是

  • 内部参数或者是逻辑错误
  • 未知错误

基础的错误码一旦发生了,除了少数错误码需要开发者进行校验检测(如参数不正确等),其它的并没有即时可用的解决方案,因为本身可能是由于内部错误或者某些逻辑检测返回的错误(如无法识别的未知错误或者BUG)

3.1、基础错误码表

错误码 字段定义 意义
300101 TASK_TIMEOUT 任务超时
300102 TASK_CANCELED 任务取消
300103 TASK_DEPENDENCE_TIMEOUT 任务依赖等待超时(如云端任务需要云端连接成功才能操作,等待期间云端未能连接成功导致超时)
400101 ERROR_UNKNOWN 未知错误
400102 ERROR_API_UNKNOWN 未知的API错误,或者解析API错误码时出错
400103 ERROR_OTHER_EXCEPTION 其它的异常信息,查看原始异常信息获取错误信息
400104 ERROR_SOCKET_TIMEOUT socket 连接超时
400105 ERROR_OPERATION_NOT_SUPPORTED 当前操作不支持无法执行
400201 MQTT_FAIL_CLIENT_PARAMS_NOT_EXIST client操作时参数不合法
400202 MQTT_FAIL_CLIENT_NOT_EXIST client不存在,无法进行相关通讯操作
400203 MQTT_FAIL_CLIENT_DISCONNECTED mqtt client未连接成功
400204 MQTT_FAIL_CLIENT_INNER_ERROR client内部出错,属于client的未知错误
400205 MQTT_FAIL_LOCAL_CLIENT_INIT 初始化本地client失败
400206 MQTT_FAIL_CLOUD_CLIENT_INIT 初始化云端client失败
400207 MQTT_FAIL_LOCAL_PUBLISH 本地发布topic失败
400208 MQTT_FAIL_CLOUD_PUBLISH 云端发布topic失败
400301 PROTOCOL_VERSION_NOT_SUPPORTED 协议版本不支持
400313 PROTOCOL_FAIL_CLOUD_CM_CONNECTED 云端连接失败
400314 PROTOCOL_FAIL_CLOUD_CM_DISCONNECTED 断开云端连接失败
400315 PROTOCOL_FAIL_PACKET_DATA 打包数据包出错
400316 PROTOCOL_FAIL_PARSE_DATA 解析数据包出错
400401 DEVICE_FAIL_LOCAL_NOT_CONNECTED 设备本地未连接
400402 DEVICE_FAIL_CLOUD_NOT_CONNECTED 设备云端未连接
400405 DEVICE_FAIL_DEVICE_NOT_EXIST 维护的设备不存在
400601 PARAMS_INVALID 参数不合法(参数存在但是未获取需要的信息,如设备对象对象存在但获取不到Mac)
400602 PARAMS_NOT_EXIST 需要的参数不存在(参数不存在,Null或者Nil)

基础错误码是理论上在任何任务中都可能出现的,大部分情况下基础错误码中最常见的错误码就是“未知错误”、“参数不存在或不合法”以及一些网络相关的错误(如 socket 超时)。

其它的错误码默认情况下即使有产生也是内部的错误码,XAPP SDK 将会在内部进行处理,除非无法通过正常流程处理,则会将错误信息抛出。

3.2、处理建议

对于基础错误码中,部分错误码需要开发人员介入校验,建议处理如下:

错误码 字段定义 意义 处理建议
400301 PROTOCOL_VERSION_NOT_SUPPORTED 协议版本不支持 XAPP SDK 版本与设备版本是否一致或者兼容,V6 XAPP SDK 兼容V5设备,但V5设备仅能使用V5的 XAPP SDK
400602 PARAMS_NOT_EXIST 需要的参数不存在(参数不存在,Null或者Nil) 参数缺少,请检查一下是否是传入的参数是否完整,大部分情况下可能是忽略了设备对象参数
400601 PARAMS_INVALID 参数不合法 传入的参数是不正确的参数导致了无法正常处理

四、根据操作分类

根据设备操作可以对每个不同操作环节可能出现的错误码进行分类,其中主要的操作包括了:

  • 扫描设备
  • 添加订阅设备
  • 操作设备(设置数据端点)
  • 移除设备(取消订阅)

4.1、扫描设备错误码

扫描操作会一直执行直到任务超时或者被中止为止,必然会抛出TASK_TIMEOUT错误,暂无其它错误码,不需要处理。当扫描到设备时就是扫描到设备,当未扫描成功时即未扫描到设备。

4.2、添加订阅设备错误码

添加订阅过程需要进行与设备进行通讯,并交换信息及校验工作,之后需要与云端再发起设备校验工作,最终将设备与用户关联起来。所以这个过程涉及的多个过程,出现的错误码也相关较多一点。绝大部分的错误码都是会在内部进行校验并处理,大部分情况下订阅失败可能是由于订阅流程出错或者是任务超时。

4.2.1、错误码表

错误码 字段定义 意义
100401 PAIRING_HANDSHAKE_LOCAL_FAIL_DH_PARAMS_INVALID 本地配对握手DH参数不合法
100402 PAIRING_HANDSHAKE_LOCAL_FAIL_PUBLIC_KEY_INVALID 本地配对握手Public Key不合法
100403 PAIRING_HANDSHAKE_LOCAL_FAIL_TICKET_VERIFY 本地Ticket验证失败(为空、不匹配)
100404 PAIRING_HANDSHAKE_LOCAL_FAIL_PIN_VERIFY 本地PinCode验证失败(为空、不匹配)
100405 PAIRING_HANDSHAKE_LOCAL_FAIL_DEVICE_NOT_READY 设备不在配对状态
100600 PAIRING_LOCAL_SUCCESS 本地配对成功
100601 PAIRING_LOCAL_FAIL_REACH_PAIRING_LIMIT 本地配对达到上限
100900 SESSION_HANDSHAKE_LOCAL_SUCCESS 本地会话握手成功
100901 SESSION_HANDSHAKE_LOCAL_FAIL_UNKNOWN_PAIRING_ID 本地会话未知pairing id
100902 SESSION_HANDSHAKE_LOCAL_FAIL_VERIFY 本地会话验证失败
100903 SESSION_HANDSHAKE_LOCAL_FAIL_DH_PARAMS_INVALID 本地会话DH参数不合法
100904 SESSION_HANDSHAKE_LOCAL_FAIL_PUBLIC_KEY_INVALID 本地public key不合法
101701 GET_TICKET_LOCAL_FAIL_UNKNOWN_TYPE 未知ticket type
201602 SUBSCRIBE_DEVICE_FAIL_DEVICE_INFO_INVAILD 云端订阅设备失败,设备信息有误
201603 SUBSCRIBE_DEVICE_FAIL_TICKET_INVAILD 云端订阅设备失败,Ticket校验失败
201604 SUBSCRIBE_DEVICE_FAIL 云端订阅设备失败
201605 SUBSCRIBE_DEVICE_FAIL_DEVICE_MODE_LIMITED 云端订阅设备失败,设备订阅模式限制订阅失败。
400304 PROTOCOL_FAIL_ENCRYPT_PAIRING 配对解密失败
400305 PROTOCOL_FAIL_DECRYPT_PAIRING 配对加密失败
400306 PROTOCOL_FAIL_DECRYPT_PAIRING_HANDSHAKE 配对握手加密失败
400307 PROTOCOL_FAIL_ENCRYPT_PAIRING_HANDSHAKE 配对握手加密失败
400308 PROTOCOL_FAIL_ENCRYPT_PIN_CODE pinCode加密失败
400309 PROTOCOL_FAIL_DECRYPT_PIN_CODE pinCode解密失败
400310 PROTOCOL_FAIL_PAIRING_HANDSHAKE_NOT_EXIT 配对握手会话信息不存在
400311 PROTOCOL_FAIL_PAIRING_NOT_EXIST 配对信息不存在

4.2.2、处理建议

对于部分可处理或者分析的错误码,建议处理如下

错误码 字段定义 意义 处理建议
100405 PAIRING_HANDSHAKE_LOCAL_FAIL_DEVICE_NOT_READY 设备不在配对状态 设备可能存在某个硬件按钮或者配置,需要通过某种操作开启配对模式,当设备处于配对模式中时才允许进行设备的配对操作。 正常情况下设备在进入配对模式后会持续一段时间(具体机制请以硬件说明为准)
100601 PAIRING_LOCAL_FAIL_REACH_PAIRING_LIMIT 本地配对达到上限 设备配对次数已达上限,部分设备默认情况下只允许配对16次(具体限制请以硬件说明为准)
201602 SUBSCRIBE_DEVICE_FAIL_DEVICE_INFO_INVAILD 云端订阅设备失败,设备信息有误 请检查设备是否异常,或当前设备是否有添加到管理台产品中,或者当前企业下是否有该设备
201605 SUBSCRIBE_DEVICE_FAIL_DEVICE_MODE_LIMITED 云端订阅设备失败,设备订阅模式限制订阅失败 一般情况下是由于设备的订阅限制引起的,请在后台管理系统中->产品信息->订阅模式,是否仅允许单人订阅

4.3、操作设备

设备操作是包括了获取设备数据端点和设置设备数据端点的操作。

4.3.1、错误码表

错误码 字段定义 意义
错误码 字段定义 意义
101301 SET_DATAPOINT_LOCAL_FAIL 设置数据端点失败
101302 SET_DATAPOINT_LOCAL_FAIL_UNAUTHORISED 未授予设置权限
101303 SET_DATAPOINT_LOCAL_FAIL_DEVICE_FAULT 设备问题
101304 SET_DATAPOINT_LOCAL_FAIL_TYPE_ERROR 数据端点类型错误
101501 GET_DATAPOINT_LOCAL_FAIL_FLAG_NOT_SUPPORTED flag参数不支持
101502 GET_DATAPOINT_LOCAL_FAIL_UNAUTHORISED 未授予获取权限
110301 PROBE_LOCAL_FAIL_FLAG_NOT_SUPPORTED flag参数不支持
110302 PROBE_LOCAL_FAIL_UNAUTHORISED 未授予获取权限
200801 SET_DATAPOINT_CLOUD_FAIL 云端设置数据端点失败
200802 SET_DATAPOINT_CLOUD_FAIL_UNAUTHORISED 未授予设置权限
201001 GET_DATAPOINT_CLOUD_FAIL 云端获取数据端点失败,服务不可用
400401 DEVICE_FAIL_LOCAL_NOT_CONNECTED 设备本地未连接
400402 DEVICE_FAIL_CLOUD_NOT_CONNECTED 设备云端未连接
400405 DEVICE_FAIL_DEVICE_NOT_EXIST 维护的设备不存在
400406 DEVICE_FAIL_DEVICE_ID_IS_ZERO 设备ID不能为0
400312 PROTOCOL_FAIL_SESSION_NOT_EXIST 本地会话信息不存在

4.3.2、处理建议

对于大部分的操作错误,一般情况下都可以考虑重试(任务超时的情况下TASK_TIMEOUT),如果有明确的错误码返回,可以根据错误码信息进行处理,大部分的错误码都与配置相关

错误码 字段定义 意义 处理建议
101302 SET_DATAPOINT_LOCAL_FAIL_UNAUTHORISED 数据端点未授予设置权限 请在后台管理系统确认产品是否允许设置数据端点
101303 SET_DATAPOINT_LOCAL_FAIL_DEVICE_FAULT 设备问题 请检查设备
101502 GET_DATAPOINT_LOCAL_FAIL_UNAUTHORISED 数据端点未授予获取权限 请在后台管理系统确认产品是否允许获取数据端点
101304 SET_DATAPOINT_LOCAL_FAIL_TYPE_ERROR 数据端点类型错误 请检查设置的数据端点类型是否正确(如确认无误请参考 XAPP SDK 相关的指南确认是否使用方式有误)
110302 PROBE_LOCAL_FAIL_UNAUTHORISED PROBE设备未授予获取权限 请在后台管理系统确认产品是否允许PROBE设备
200802 SET_DATAPOINT_CLOUD_FAIL_UNAUTHORISED 数据端点未授予设置权限 请在后台管理系统确认产品是否允许设置数据端点
400406 DEVICE_FAIL_DEVICE_ID_IS_ZERO 设备ID不能为0 请检查设备ID是否为0

4.4、移除设备

移除设备的话主要包括取消设备之前的关联,同时并取消用户与设备的绑定关系,该操作与HTTP请求有关,所以可能会返回关于HTTP的错误,请参考HTTP的错误码说明进行处理.

五、更新说明

日期 更新内容
2018.07.05 调整错误码使用说明,删除多种分类介绍,简化错误码使用成本
没找到需要的文档?
你可以提交工单反馈 或 阅读常见问题