华为云用户手册

  • 错误码 当您调用API时,如果遇到“APIGW”开头的错误码,请参见API网关错误码进行处理。 状态码 错误码 错误信息 描述 处理措施 200 AIAE.22001001 API调用异常 API调用异常 调用接口url、请求方式错误或出现访问其他用户资源的越权问题,请检查后重试 200 AIAE.22001002 IAM 认证异常 IAM认证异常 后端服务错误,请联系技术支持 200 AIAE.22001003 认证失败: {reason} 认证失败: {reason} 请参考返回的error message,或联系技术支持 200 AIAE.22001004 参数{parameterName}异常 参数{parameterName}异常 输入的参数有误,请参考返回的error message进行修改后重试 200 AIAE.22001005 {type}类型远程调用失败,错误信息为{error_msg} {type}类型远程调用失败,错误信息为{error_msg} 请参考返回的error message处理后重试 200 AIAE.22001006 文件上传失败: {reason} 文件上传失败: {reason} 文件上传失败,请参考返回的error message处理后重试 200 AIAE.22009001 系统内部错误,请联系管理员 系统内部错误,请联系管理员 系统内部错误,请联系技术支持 400 AIAE.31001106 AK/SK signature verify failed, please check and try again later! 很抱歉,AK/SK签名验证失败! 很抱歉,AK/SK签名验证失败! 400 AIAE.31001601 Sensitive request error, please try again later! 很抱歉,请求内容中包含敏感信息,请重试! 很抱歉,请求内容中包含敏感信息,请重试! 400 AIAE.31001602 Sensitive response error, please try again later! 很抱歉,返回内容中包含敏感信息,请重试! 很抱歉,返回内容中包含敏感信息,请重试! 400 AIAE.31001603 Sensitive content error, please try again later! 很抱歉,请求或返回内容中包含敏感信息,请重试! 很抱歉,请求或返回内容中包含敏感信息,请重试! 400 AIAE.31001701 Bad request parameter error, please check and try again later! 很抱歉,请求参数异常,请检查后重试! 很抱歉,请求参数异常,请检查后重试! 400 AIAE.40001003 Authentication failed X-Auth-Token 鉴权失败 很抱歉,X-Auth-Token 鉴权失败 400 AIAE.40002605 knowledgeBase status is not ENABLE 很抱歉,知识库未启用,没有权限查询 很抱歉,知识库未启用,没有权限查询 401 AIAE.31001101 User not login, please check and try again later! 很抱歉,用户未登录,请登录后重试! 很抱歉,用户未登录,请登录后重试! 401 AIAE.31001102 AK/SK verify failed, please check and try again later! 很抱歉,AK/SK校验失败! 很抱歉,AK/SK校验失败! 401 AIAE.31001103 Authentication verify failed, please check and try again later! 很抱歉,鉴权失败! 很抱歉,鉴权失败! 401 AIAE.31001104 API Key verify failed, please check and try again later! 很抱歉,API Key校验失败! 很抱歉,API Key校验失败! 401 AIAE.31001201 Tenant id is empty, please check and try again later! 很抱歉,空的租户id,请检查后重试! 很抱歉,空的租户id,请检查后重试! 401 AIAE.31005001 The third model service authentication is abnormal, please check and try again later! 很抱歉,三方模型服务鉴权异常,请检查您的鉴权信息! 很抱歉,三方模型服务鉴权异常,请检查您的鉴权信息! 401 AIAE.31005002 Invalid third api key, please check and try again later! 很抱歉,三方模型服务鉴权API Key异常,请检查您的鉴权信息! 很抱歉,三方模型服务鉴权API Key异常,请检查您的鉴权信息! 401 AIAE.31005007 The third model service authentication is empty, please set and try again later! 很抱歉,三方模型服务鉴权未设置,请设置后重试! 很抱歉,三方模型服务鉴权未设置,请设置后重试! 402 AIAE.31005005 The third model service exceeded current quota error, please check and try again later! 很抱歉,账户异常,请检查您的账户余额! 很抱歉,账户异常,请检查您的账户余额! 403 AIAE.31001105 Role permission verify failed, please check and try again later! 很抱歉,当前用户不允许该操作! 很抱歉,当前用户不允许该操作! 403 AIAE.31001501 SKU not subscribed to model service, please try again after subscribed! 很抱歉,您未订阅当前模型服务的SKU,请联系管理员订阅! 很抱歉,您未订阅当前模型服务的SKU,请联系管理员订阅! 403 AIAE.31001502 SKU verify failed, please check and try again later! 很抱歉,SKU校验异常,请检查您的SKU! 很抱歉,SKU校验异常,请检查您的SKU! 403 AIAE.40001004 User does not have permission 当前用户没有权限 很抱歉,当前用户没有权限 404 AIAE.31001202 Model not published, please try again after model published! 很抱歉,模型服务未发布,请发布后重试! 很抱歉,模型服务未发布,请发布后重试! 404 AIAE.31001702 Model not exists, please check and try again later! 很抱歉,模型服务不存在,请检查您输入的模型服务名称! 很抱歉,模型服务不存在,请检查您输入的模型服务名称! 408 AIAE.31001003 Connection timeout, please try again later! 很抱歉,网络连接超时,请稍后重试! 很抱歉,网络连接超时,请稍后重试! 408 AIAE.31005006 The third model service connect timeout, please try again later! 很抱歉,三方服务连接超时,请稍后重试! 很抱歉,三方服务连接超时,请稍后重试! 429 AIAE.31001002 Request too frequent error, please try again later! 很抱歉,您的请求过于频繁,请稍后重试! 很抱歉,您的请求过于频繁,请稍后重试! 429 AIAE.31005003 The third model service rate limit exceeded, please try again later! 很抱歉,您的请求当前已达最大并发数,请稍后重试! 很抱歉,您的请求当前已达最大并发数,请稍后重试! 429 AIAE.31005004 The third model service overload error, please try again later! 很抱歉,服务当前超载,请稍后重试! 很抱歉,服务当前超载,请稍后重试! 500 AIAE.31001001 Internal server error, please try again later! 很抱歉,服务内部出现了问题,请稍后重试! 很抱歉,服务内部出现了问题,请稍后重试! 500 AIAE.31001004 Ai security governance service error, please try again later or disable ai security governance service! 很抱歉, 内容审核 服务出现了问题,请稍后重试! 很抱歉,内容审核服务出现了问题,请稍后重试! 500 AIAE.31005000 Invalid third response, please try again later! 很抱歉,调用三方模型服务异常,请稍后重试! 很抱歉,调用三方模型服务异常,请稍后重试! 父主题: 附录
  • 响应消息体 响应消息体通常以结构化格式返回,与响应消息头中Content-type对应,传递除响应消息头之外的内容。 对于文本对话接口,返回如下消息体。为篇幅起见,这里只展示部分内容。 { "created": 1718772336, "usage": { "completion_tokens": 23, "prompt_tokens": 45, "total_tokens": 68 }, "model": "chatglm3-6b", "id": "chatcmpl-xxx", "choices": [{ "finish_reason": "stop", "index": 0, "message": { "role": "assistant", "content": "你好,有什么我可以帮助你的吗?" }, "logprobs": null }], "object": "chat.completion" } 当接口调用出错时,会返回错误码及错误信息说明,错误响应的Body体格式如下所示。 { "error_code": "AIAE.31001702", "error_msg": "Model not exists, please check and try again later!" } 其中,error_code表示错误码,error_msg表示错误描述信息。
  • 响应示例 状态码: 200 OK { "data" : [ { "id" : "812857ef-e298-4b8e-8bd1-24ba9fd5e95c", "document" : "户外运动热度大大带动各相关产业发展", "similarity" : 0.79593855, "metadata" : { "order" : 0, "file_name" : "户外运动热度大大带动各相关产业发展.docx", "file_id" : "户外运动热度大大带动各相关产业发展", "path" : "户外运动热度大大带动各相关产业发展.docx" }, "download_address" : null } ] } 状态码: 500 服务器内部错误或三方服务器内部错误 { "error_code" : "AIAE.00001500", "error_msg" : "系统内部错误。" }
  • 请求参数 表2 请求Body参数 参数 是否必选 参数类型 描述 keyword 否 String 搜索关键字。 similarity_min 否 Float 相似度最小值。 limit 是 Integer 显示的条目数量。 最小值:1 最大值:100 filter 否 SearchSqlFilter object 过滤条件。 order_by 否 SqlOrder object 排序规则。 表3 SearchSqlFilter 参数 是否必选 参数类型 描述 group_type 否 Object 枚举值: AND OR expressions 否 Array of Expression objects 过滤条件。 表4 Expression 参数 是否必选 参数类型 描述 field 否 String 过滤字段。 field_type 否 Object 字段类型。 枚举值: INT FLOAT BOOLEAN STRING operator 否 Object 操作符。 枚举值: EQUAL NOT_EQUAL GREAT_THAN GREAT_EQUAL LESS_THAN LESS_EQUAL IN NOTIN values 否 Array of strings 过滤值。 表5 SqlOrder 参数 是否必选 参数类型 描述 order_items 否 Array of OrderItem objects 排序规则。 表6 OrderItem 参数 是否必选 参数类型 描述 field 否 String 排序字段。 field_type 否 Object 字段类型。 枚举值: INT FLOAT BOOLEAN STRING order_type 否 Object 排序类型。 枚举值: ASC DESC
  • 响应参数 状态码: 200 表7 响应Body参数 参数 参数类型 描述 data Array of data objects 检索知识库数据具体内容。 表8 data 参数 参数类型 描述 id String 分片id。 document String 分片数据。 similarity Float 相似度范围, 从0到1数值越大相似度越高。 metadata metadata object 元数据。 download_address String 临时下载地址,当知识库数据类型为图片、图片-摘要、视频-摘要时有临时下载地址。 表9 metadata 参数 参数类型 描述 order Integer 序号。 path String 文件路径。 状态码: 500 表10 响应Body参数 参数 参数类型 描述 error_code String 异常错误码 error_msg String 异常错误信息
  • URI POST /v1/workflow-adapter/flows/{flow_id}/execution/public 表1 路径参数 参数 是否必选 参数类型 描述 flow_id 是 String 流id。 表2 Query参数 参数 是否必选 参数类型 描述 query_example 否 String 按照用户配置的工作流请求参数配置,如果用户配置的工作流输入存在查询参数,则应该配置对应的参数并在调用时输入特定的值。
  • 响应示例 状态码: 200 请求被服务所理解,正常调用。 { "data" : { "responseBody" : "something in response body", "responseHeaders" : { "Server" : "api-gateway", "X-Request-Id" : "787b7740f42e75b007ac3bfb599fcef4", "X-Content-Type-Options" : "nosniff", "Connection" : "keep-alive", "lubanops-nspan-id" : "1", "X-Download-Options" : "noopen", "Date" : "Tue, 23 Jul 2024 11:38:29 GMT", "lubanops-ntrace-id" : "2748112-1721734708992-1130609", "Referrer-Policy" : "no-referrer", "X-Frame-Options" : "SAMEORIGIN", "Strict-Transport-Security" : "max-age=31536000; includeSubdomains;", "lubanops-nenv-id" : "28164", "Content-Length" : "0", "X-XSS-Protection" : "1; mode=block;", "Content-Type" : "application/json" }, "statusCode" : 200 } } 状态码: 500 服务器内部错误或三方服务器内部错误。 { "error_code" : "AIAE.22001003", "error_msg" : "Internal Server Error." }
  • 开发大屏页面 登录AstroCanvas服务控制台,单击“进入首页”,进入AstroCanvas界面。 选择大屏&PC端项目,输入项目名称为“统计”,单击“新建”。 图2 新建项目 在大屏&PC端项目中,单击“+ 新建页面”,选择“新建空白页面”。 输入页面标题“人员来访统计”,单击“新建”。 页面标题的长度为1~100个字符。如果页面默认大小和您的显示分辨率或目标分辨率不符,请自行调整页面分辨率及组件布局以达到最佳显示效果 在页面上方单击,根据实际需要设置背景图片。 图3 设置背景图片 图4 选择背景图 从全部组件中,分别拖拽文本编辑、水平基本柱图、基本柱图、和区域图到画布区域,布局如图6所示。 图5 拖拽文本编辑组件到画布 图6 组件布局 在页面右上角,根据需要选择所需的主题(本示例设置为经典原始,即单击“取消当前主题卡片装饰”)。 配置文本编辑组件。 选中上方文本编辑组件,单击上方,设置文本内容为“人员来访统计”,字体设置为“60”。 图7 设置文本编辑标题 在段落设置中,设置标题对齐方式为“居中”。 图8 设置标题对齐方式 配置水平基本柱图组件。 选中最上方的水平基本柱图组件,在组件上方单击,配置组件数据,单击“保存”。 “数据类型”选择“静态数据”,“输入数据”选择“Json模式”,输入如下示例数据,并单击,格式化数据。 [{ "x": "人员统计", "y": 153, "s": "总公司员工" }, { "x": "人员统计", "y": 80, "s": "合作人员" }, { "x": "人员统计", "y": 63, "s": "访客人员" }, { "x": "人员统计", "y": 124, "s": "安防人员" }, { "x": "人员统计", "y": 56, "s": "保洁人员" } ] 选中水平基本柱图组件,在组件上方单击,设置模板为“蓝色渐变不排序”。 图9 设置模板 选中水平基本柱图组件,在组件上方单击,将所有数据系列中的“数据标签”设置为“上”,让数据显示在柱形图上方。 图10 数据显示在柱形图上方 打开水平堆叠效果。 图11 打开水平堆叠 选中水平基本柱图组件,在组件上方单击,隐藏x轴,并隐藏y轴网格线。 图12 隐藏x轴 图13 隐藏y轴网格线 选中水平基本柱图组件,在组件上方单击,设置组件标题内容为“当前人员类型统计”。 图14 设置组件标题 参考9,配置左下角基本柱图。 选中左下角的基本柱图组件,在组件上方单击,配置组件数据,单击“保存”。 “数据类型”选择“静态数据”,“输入数据”选择“Json模式”,输入如下示例数据,并单击,格式化数据。 [{ "x": "01", "y": 20, "s": "入园人数" }, { "x": "02", "y": 30, "s": "入园人数" }, { "x": "03", "y": 45, "s": "入园人数" }, { "x": "04", "y": 20, "s": "入园人数" }, { "x": "05", "y": 60, "s": "入园人数" }, { "x": "06", "y": 80, "s": "入园人数" }, { "x": "07", "y": 140, "s": "入园人数" }, { "x": "08", "y": 200, "s": "入园人数" }, { "x": "09", "y": 145, "s": "入园人数" }, { "x": "10", "y": 40, "s": "入园人数" }, { "x": "11", "y": 70, "s": "入园人数" }, { "x": "12", "y": 60, "s": "入园人数" }, { "x": "13", "y": 80, "s": "入园人数" }, { "x": "14", "y": 16, "s": "入园人数" }, { "x": "15", "y": 87, "s": "入园人数" }, { "x": "16", "y": 77, "s": "入园人数" }, { "x": "17", "y": 60, "s": "入园人数" }, { "x": "18", "y": 20, "s": "入园人数" }, { "x": "19", "y": 60, "s": "入园人数" }, { "x": "20", "y": 80, "s": "入园人数" }, { "x": "21", "y": 55, "s": "入园人数" }, { "x": "22", "y": 68, "s": "入园人数" }, { "x": "23", "y": 70, "s": "入园人数" }, { "x": "24", "y": 24, "s": "入园人数" }, { "x": "01", "y": 90, "s": "出园人数" }, { "x": "02", "y": 60, "s": "出园人数" }, { "x": "03", "y": 30, "s": "出园人数" }, { "x": "04", "y": 20, "s": "出园人数" }, { "x": "05", "y": 10, "s": "出园人数" }, { "x": "06", "y": 110, "s": "出园人数" }, { "x": "07", "y": 140, "s": "出园人数" }, { "x": "08", "y": 87, "s": "出园人数" }, { "x": "09", "y": 64, "s": "出园人数" }, { "x": "10", "y": 45, "s": "出园人数" }, { "x": "11", "y": 11, "s": "出园人数" }, { "x": "12", "y": 24, "s": "出园人数" }, { "x": "13", "y": 80, "s": "出园人数" }, { "x": "14", "y": 14, "s": "出园人数" }, { "x": "15", "y": 98, "s": "出园人数" }, { "x": "16", "y": 35, "s": "出园人数" }, { "x": "17", "y": 41, "s": "出园人数" }, { "x": "18", "y": 14, "s": "出园人数" }, { "x": "19", "y": 45, "s": "出园人数" }, { "x": "20", "y": 80, "s": "出园人数" }, { "x": "21", "y": 31, "s": "出园人数" }, { "x": "22", "y": 22, "s": "出园人数" }, { "x": "23", "y": 23, "s": "出园人数" }, { "x": "24", "y": 24, "s": "出园人数" } ] 选中基本柱图组件,单击组件上方的,在统一配置中将数据系列中柱条宽度设置为8。 图15 设置柱条宽度为8 选中基本柱图组件,单击组件上方的,显示x轴网格线,显示y轴轴线,隐藏y轴网格线。 图16 显示x轴网格线 图17 显示y轴轴线、隐藏网格线 选中基本柱图组件,单击组件上方的,设置标题“内容”为“人员流程统计 人/时”。 图18 设置标题 参考9,配置区域图。 选择右下方的区域图组件,在组件上方单击,配置组件数据。 “数据类型”选择“静态数据”,“输入数据”选择“Json模式”,输入如下示例数据,并单击,格式化数据。 [{ "x": "01", "y": 20, "s": "在园人数" }, { "x": "02", "y": 30, "s": "在园人数" }, { "x": "03", "y": 45, "s": "在园人数" }, { "x": "04", "y": 20, "s": "在园人数" }, { "x": "05", "y": 60, "s": "在园人数" }, { "x": "06", "y": 80, "s": "在园人数" }, { "x": "07", "y": 140, "s": "在园人数" }, { "x": "08", "y": 200, "s": "在园人数" }, { "x": "09", "y": 145, "s": "在园人数" }, { "x": "10", "y": 40, "s": "在园人数" }, { "x": "11", "y": 70, "s": "在园人数" }, { "x": "12", "y": 60, "s": "在园人数" }, { "x": "13", "y": 80, "s": "在园人数" }, { "x": "14", "y": 16, "s": "在园人数" }, { "x": "15", "y": 87, "s": "在园人数" }, { "x": "16", "y": 77, "s": "在园人数" }, { "x": "17", "y": 60, "s": "在园人数" }, { "x": "18", "y": 20, "s": "在园人数" }, { "x": "19", "y": 60, "s": "在园人数" }, { "x": "20", "y": 80, "s": "在园人数" }, { "x": "21", "y": 55, "s": "在园人数" }, { "x": "22", "y": 68, "s": "在园人数" }, { "x": "23", "y": 70, "s": "在园人数" }, { "x": "24", "y": 24, "s": "在园人数" } ] 选中区域图组件,单击组件上方的,设置标题内容为“昨日在园人数统计 人/时”。 图19 设置组件标题 选中区域图组件,单击组件上方的,显示x轴网格线,打开y轴轴线开关,隐藏y轴网格线。 图20 显示x轴网格线 图21 打开y轴轴线隐藏网格线 单击页面上方的,保存后单击,预览效果。 图22 查看预览效果
  • 场景描述 人员来访统计大屏用于展示园区中人员相关信息,例如人员类型,人员流量及在园人数等。大屏页面构想,如图1所示。 图1 大屏页面效果 图1中大屏页面由下列组件拼装而成,组件介绍顺序为从上到下、从左到右。 表1 组件说明 组件 说明 文本编辑 文本编辑组件,用于展示标题,例如人员来访统计。 水平基本柱图 统计当前人员类型,如总公司员工、合作员工、访客人员、安防人员、保洁人员。 基本柱图 统计入园和出园人数。 区域图 统计昨日在园人数。
  • 开发移动端页面 登录AstroCanvas服务控制台,单击“进入首页”,进入AstroCanvas界面。 在项目列表页面,单击右上角的“+ 新建项目”。 选择“移动端”,输入项目名称为“Alarm”,单击“新建”。 图2 新建移动端项目 在项目中,单击“+新建页面”。 单击“新建空白页面”,输入页面标题“告警处理情况统计”,单击“新建”。 设置水平基本柱图组件。 在左侧全部组件中,拖拽“水平基本柱图”到页面开发操作区域,即画布区域。 图3 拖拽水平基本柱图组件 选择水平基本柱图组件,单击组件上方的,配置数据源,完成后单击“保存”。 “数据类型”选择“静态数据”,“输入数据”选择“Json模式”,输入如下示例数据,并单击,格式化数据。 [{ "x": "10-01", "y": 311, "s": "待派单" }, { "x": "10-02", "y": 465, "s": "待派单" }, { "x": "10-03", "y": 927, "s": "待派单" }, { "x": "10-04", "y": 630, "s": "待派单" }, { "x": "10-05", "y": 65, "s": "待派单" }, { "x": "10-06", "y": 800, "s": "待派单" }, { "x": "10-07", "y": 247, "s": "待派单" }, { "x": "10-08", "y": 530, "s": "待派单" }, { "x": "10-01", "y": 311, "s": "已派单" }, { "x": "10-02", "y": 465, "s": "已派单" }, { "x": "10-03", "y": 345, "s": "已派单" }, { "x": "10-04", "y": 630, "s": "已派单" }, { "x": "10-05", "y": 65, "s": "已派单" }, { "x": "10-06", "y": 800, "s": "已派单" }, { "x": "10-07", "y": 247, "s": "已派单" }, { "x": "10-08", "y": 530, "s": "已派单" }, { "x": "10-01", "y": 311, "s": "处理中" }, { "x": "10-02", "y": 465, "s": "处理中" }, { "x": "10-03", "y": 927, "s": "处理中" }, { "x": "10-04", "y": 630, "s": "处理中" }, { "x": "10-05", "y": 1334, "s": "处理中" }, { "x": "10-06", "y": 800, "s": "处理中" }, { "x": "10-07", "y": 247, "s": "处理中" }, { "x": "10-08", "y": 530, "s": "处理中" }, { "x": "10-01", "y": 311, "s": "已关闭" }, { "x": "10-02", "y": 465, "s": "已关闭" }, { "x": "10-03", "y": 927, "s": "已关闭" }, { "x": "10-04", "y": 630, "s": "已关闭" }, { "x": "10-05", "y": 65, "s": "已关闭" }, { "x": "10-06", "y": 800, "s": "已关闭" }, { "x": "10-07", "y": 689, "s": "已关闭" }, { "x": "10-08", "y": 530, "s": "已关闭" } ] 选中水平基本柱图组件,单击组件上方的,“参考模板”为“蓝色渐变不排序”,并设置组件标题为“告警处理情况统计”。 图4 设置模板 图5 配置标题 选中水平基本柱图组件,单击组件上方的,打开“水平堆叠”开关,并将所有数据系列中的“数据标签”设置为“上”。 图6 打开水平堆叠开关 选中水平基本柱图组件,单击组件上方的,隐藏Y轴网格线。 图7 隐藏网格线 设置基本折线图组件。 在左侧全部组件中,拖拽“基本折线图”组件到移动端页面开发操作区域,即画布区域。 图8 拖拽基本折线图 选中基本折线图组件,单击组件上方的,设置组件数据源,完成后单击“保存”。 “数据类型”选择“静态数据”,“输入数据”选择“Json模式”,输入如下示例数据,并单击,格式化数据。 [{ "x": "12-29", "y": 0, "s": "平均处理时长" }, { "x": "12-30", "y": 0, "s": "平均处理时长" }, { "x": "12-31", "y": 0, "s": "平均处理时长" }, { "x": "01-01", "y": 82, "s": "平均处理时长" }, { "x": "01-02", "y": 78, "s": "平均处理时长" }, { "x": "01-03", "y": 67, "s": "平均处理时长" }, { "x": "01-04", "y": 43, "s": "平均处理时长" } ] 选中基本折线图组件,单击组件上方的,设置组件标题“内容”为“告警平均处理时长统计”。 图9 设置组件标题 选中基本折线图组件,单击组件上方的,打开Y轴轴线“显示”开关。 图10 轴线显示 单击页面上方的,保存后单击,选择不同手机型号查看页面在移动端上的显示效果。 图11 查看预览效果
  • 数据上报失败如何处理? 若设备是使用接口注册的,请确认设备是否因为没在指定的timeout时间内上线而被 物联网平台 自动删除了。如果设备已被删除,请重新注册设备再尝试上报数据。 请检查使用接口注册设备时,填写的产品信息是否和产品模型一致。 请检查上报的数据名称是否和产品模型定义的服务属性一致。 确定以上都不存在问题时,请检查设备和物联网平台之间的网络链路是否畅通,设备是否正常运行。 若设备为NB-IoT设备,请再参考NB模组无法正常上报数据怎么办?进行排查。
  • 为何上报中文数据,平台会乱码呈现? 问题描述 使用MQTT.fx设备模拟器进行数据上报时,在json字符串中携带中文字符,如下图: 图4 MQTT.fx数据上报截图 上报至IoTDA平台后,会出现乱码情况,如下图: 图5 设备-设备属性乱码样例 可能原因 MQTT.fx设备模拟器不支持中文字符。 解决办法 与平台交互时,不使用中文字符。 请将上报数据中的中文字符进行Unicode编码处理。 替换第三方设备模拟器,推荐使用IoTDA自研的设备模拟器。
  • 命令下发失败如何处理? 问题描述 调用命令下发接口报错或调用接口成功但设备未收到命令。 可能原因 设备协议不支持。 设备订阅的下行topic不正确或者设备上行topic及消息体不正确。 解决方法 确认使用的接口是否支持设备协议(同步命令下发当前仅支持MQTT协议设备)。 同步命令下发操作步骤: 确认设备订阅下行topic是否正确(需订阅成功后才可调用接口,不订阅,设备收不到平台消息),详细请参考平台命令下发接口文档。 若设备有收到平台下发的消息,确认设备上行topic及消息体是否正确,且必须在收到平台消息20s内(消息接口不限定20s),通过上行topic向平台发送,否则接口报错(request_id为下行消息中携带)。 异步命令下发操作步骤: 确认是立即下发还是缓存下发(根据入参的send_strategy判断)。 立即下发:设备在线,调用接口后设备立即收到。 缓存下发:调用接口后,设备上报数据后收到。
  • 物联网平台的命令状态总共有几种? LWM2M/CoAP设备命令下发状态 物联网平台命令下发包含如下状态: 超期:表示命令在物联网平台缓存时间超期,未向设备下发。 成功:表示物联网平台已经将命令下发给设备,且收到设备上报的命令执行结果。 失败:表示编解码插件解析为空,或执行结果响应里面有“ERROR CODE”等。 超时:表示物联网平台等待ACK响应超时。 取消:表示应用侧已经取消命令下发。 等待:表示命令在物联网平台缓存,还未下发给设备。 已发送:表示物联网平台已经将命令下发给设备。 已送达:表示物联网平台已经将命令下发给设备,且收到设备返回的ACK消息。 各命令状态之间的转换如下图所示: 图6 命令状态转换图 MQTT设备下发消息状态 等待:MQTT设备不在线,物联网平台会将消息进行缓存,此时任务状态为“等待”状态。 超时:物联网平台缓存的PENDING状态的消息,如果1天之内还没有下发下去,物联网平台会将消息状态设置为"超时”。 已送达:物联网平台将消息发送给设备后,状态变为“已送达”。 失败:物联网平台发送消息给设备不成功,消息状态变为“失败”。 各消息状态之间的转换如下图所示: 图7 消息状态转换图
  • 物联网平台下发异步命令有重发机制吗? 物联网平台具备异步命令重发机制。异步命令发送后(可以在设备接入的命令详情中查看命令发送时间):如果物联网平台未收到设备返回的ACK,则在10s~15s后会进行第一次重传。如果物联网平台仍未收到设备返回的ACK,在20s~30s后进行第二次重传。如果物联网平台依旧未收到设备返回的ACK,在40s~60s进行第三次重传。如果物联网平台在80s~180s后还没收到设备返回的ACK,则命令状态变为超时。
  • IoT Device SDK 和IoT Device SDK Tiny有什么区别? 相比于IoT Device SDK,Tiny版本更加轻量,适用于内存以及磁盘空间更小的设备,且一般很少挂载子设备,在编译中没有使用动态链接库,代码提供了操作系统抽象层,可适配多种OS,例如FreeRTOS、linux、NovaOS、ucos_ii、OpenHarmony LiteOS-M等;除MQTT(S)还支持LwM2M,CoAP协议,Tiny使用的mbedtls加密,IoT Device SDK C采用的openssl加密。详细请参考IoT Device SDK介绍。
  • IoT Device SDK C Tiny相关问题 LiteOS操作系统层面相关技术问题解答。 请移步LiteOS社区。 日志中出现诸如mqtt_imp_init: ###please implement mqtt by yourself####此类问题。 首先检查编译架构中对于__attribute__ ((weak))函数的支持性,如果不支持,建议将这些函数全部注释掉;如果出现link_tcpip_imp_init:###please implement this function by yourself####,建议检查是否实现网络层的适配。 在使用SDK时发现某些任务执行顺序与任务优先级顺序不符? SDK中默认使用的优先级从大到小依次为0-31,用户可根据不同的操作系统自行调整相应任务的优先级。 SDK移植流程主要包括哪些步骤? 移植过程主要包括操作系统注册到OSAL层以及TCPIP注册到SAL层,同时可以根据需求进行模块化裁剪,详见开发指南。 使用MQTT协议对接华为云时,返回错误码2 具体日志如下所示 图1 MQTT链接错误提示 该问题为网络错误,首先建议用户检查开发板是否已经联网成功,如果网络联通,建议检查所要对接网络的IP地址或 域名 以及端口号是否正确,如linux环境下,可以ping所要对接的网络地址查看是否ping通。 客户在对接华为云时,出现网络断连接后,在恢复网络时设备没有自动重连。 图2 断链没有重连日志提示 日志中可见PAHO已经退出,设备已经与平台断开连接,主动下线。建议客户修改SDK目录中的network\mqtt\paho_mqtt\port\paho_mqtt_port.c文件中的函数__loop_entry()中的休眠时间1ms调大至100ms,具体为:osal_task_sleep(100),查看是否可以自动重连。 使用MQ TTS 对接华为云时,流程卡死在topic订阅阶段,参考日志如下所示。 图3 流程卡死topic订阅日志提示 请将iot_config.h文件中的宏CONFIG_PAHO_LOOPTIMEOUT调整为1000。 开发板使用MQTT对接华为云成功,但切换到MQTTS时对接失败 可能是开发板内存不足导致,建议测试下开发板剩余内存,建议内存尽量大于60K,如在OpenHarmony L0设备中可以调用接口LOS_MemPoolSizeGet(m_aucSysMem0)获取总内存,LOS_MemTotalUsedGet(m_aucSysMem0)获取已使用内存,做差即可获取到剩余内存,如果移植了shell也可以通过free指令获取到当前内存情况。 采用MQTT对接华为云的正确日志如下所示,应如何解读? 图4 MQTT正常建链日志提示 日志中第3、4行是MQTT协议对接华为云必现日志,若使用MQTTS则会出现第2行日志;如果使用适配sal的tcpip协议则会出现第1行日志;若相应日志没有打印,建议根据文件link_main.c找到对应功能的初始化函数所对应的宏,之后在iotlink_config.h中检查对应的宏是否打开。 设备断电之后在IoTDA平台仍然可以看到设备在线? 如果设备没有主动断链通知平台下线,则设备下线时间与代码中的MQTT心跳时间lifetime相关,为1.5倍的心跳时间,在MQTT建立连接时,连接参数中对lifetime进行设置即可。 目前已经移植了IoT Device SDK Tiny(附代码)的设备清单 详见移植设备清单列表。
  • 设备管理服务和 设备接入服务 合一后的差异点是什么? 设备管理服务和设备接入服务合一后,主要有以下变更点: 功能:全新升级后的设备接入服务(IoTDA),整合了原设备接入服务和设备管理服务的功能,新用户只需开通设备接入服务,即可同时使用设备接入和设备管理的全部功能。 计费:已开通过设备接入服务的用户,可叠加使用设备管理服务的功能,按消息数计费的方式不变;原设备接入服务和设备管理服务都已开通使用的用户, 业务使用不受影响, 自2020年3月26日00:00(北京时间)起,计费方式请参考计费模式。 父主题: 方案咨询
  • 在产品详情上传产品模型,弹窗提示“文件输入格式有误”? 问题描述 客户在产品详情界面里,上传产品模型文件,提示“文件输入格式有误”。 可能原因 模型的json文件格式错误。 servicetype-capability.json中commands/properties的值不是数组格式。 压缩包中存在其他的文件。 解决方法 检查每个json文件的格式是否正确,可以使用第三方格式校验工具进行检查。 检查servicetype-capability.json中commands/properties的值是否为数组格式(值是否包含在中括号之内)。 检查产品模型的压缩包是否存在其他文件或者隐藏文件,如果存在其他文件或者隐藏文件,则删除后重新上传。
  • 在产品详情中上传产品模型,无法单击确定按钮? 问题描述 用户在产品详情页面中上传了产品模型,无法单击确定按钮。 图1 产品-上传模型文件 可能原因 上传的产品模型文件命名不符合规范。 上传的产品模型的压缩文件不是zip格式的。 解决方法 检查产品模型文件的名称是否符合deviceType_manufacturerId_model.zip的格式,并检查“deviceType”、“manufacturerId”、“model”三个字段是否和devicetype-capability.json中的定义一致。 检查产品模型文件是否压缩为zip格式。如非zip格式,请解压后重新压缩、上传。
  • 在线开发产品模型时,如何选择数据类型? 数据类型的配置可以参考如下原则: int:当上报的数据为整数或布尔值时,可以匹配为此类型。插件开发中可匹配int型或array类型。 decimal:当上报的数据为小数时,可以匹配为此类型。插件开发中可匹配string或者int或者array类型。 string:当上报的数据为字符串、枚举值或布尔值时,可以配置为此类型。如果为枚举值或布尔值,值之间需要用英文逗号(“,”)分隔。插件开发中可匹配string类型或者array类型。 dateTime:当上报的数据为日期时,可以配置为此类型。插件开发中可匹配string类型或者array类型。 jsonObject:当上报的数据为json结构体时,可以配置为此类型。插件开发者可匹配string或者array类型。
  • 使用小熊派开发板开发时,设备无法激活? 可以输入“AT+CGATT?”,然后单击“发送”,若返回“+CGATT:1”,表示网络附着成功(附着成功代表NB-IoT联网正常),返回“+CGATT:0”表示网络附着失败,请查看SIM卡是否插入正确,或联系运营商检查网络状态; 或者可以将拨测开关拨到AT-PC模式,选择STM的端口,波特率设置为9600,输入指令“AT+CGSN=1”获取IMEI号,比较跟在平台注册设备时填写IMEI号是否保持一致,不一致的话,需要修改成一致的。
  • deviceId、nodeId和IMEI有什么对应关系? 在物联网平台中,设备注册时,需要填写设备标识码(即nodeId)。设备标识码是设备的物理标识,通常使用IMEI或MAC地址。设备ID(deviceId)是物联网平台对设备的逻辑标识。 NB-IoT设备:在设备接入物联网平台时携带设备标识码(nodeId),完成设备的接入鉴权。 MQTT设备:在设备接入物联网平台时携带设备ID(deviceId)和密钥,通过一机一密的方式,完成设备的接入鉴权。 更多请参考设备注册鉴权。
  • 物联网卡无法正常接入设备接入平台? 电信NB物联网卡 由于电信NB网络做了限制,目前电信NB卡连接华为云IoT平台,会出现设备接入平台或执行软固件升级失败等情况。 3G/4G物联网卡 根据工网安函〔2020 〕1173 号文件,3G/4G物联网卡流量包规格大于100MB或配置流量池的情况下,需要提供定向IP地址或域名才能购买。因此如果您的物联网卡需要访问华为云IoT平台时,请您检查物联网卡的定向信息是否包含华为云IoT平台的域名。 图7 物联网卡 查询华为云IoT平台接入域名,详细步骤可以参考资源获取。 GSL控制台定向域名/IP修改方式进入订单管理页面,详细步骤请参考订单管理资料。 电信NB物联网卡通过云云对接接入华为云IoT平台的功能正在公测中,如有相关诉求请新建工单,联系相关技术专家进行处理。
  • 创建规则或者设置资源文件存储时候提示赋予Security Administrator权限 使用IAM用户访问设备接入服务,创建规则或者设置资源文件存储时提示“请联系管理员给您所在的用户组赋予Security Administrator的权限”,表明IAM用户没有授予委托管理权限,请参考以下操作配置权限。 方法1:创建一个自定义策略(包括查询、创建委托、查询角色等功能),并添加到IAM用户所在的用户组中(推荐该方法) 使用管理员账号登录IAM控制台,单击左侧导航栏的“权限管理--权限”,单击页面右上角的“创建自定义策略”。 策略名称:自定义; 策略配置方式:json视图; 策略内容:参考如下填写; { "Version": "1.1", "Statement": [ { "Action": [ "iam:agencies:createAgency", "iam:agencies:listAgencies", "iam:agencies:getAgency", "iam:permissions:listRolesForAgencyOnDomain", "iam:permissions:listRolesForAgencyOnProject", "iam:permissions:grantRoleToAgencyOnProject", "iam:permissions:revokeRoleFromAgencyOnProject", "iam:permissions:grantRoleToAgencyOnDomain", "iam:permissions:revokeRoleFromAgencyOnDomain", "iam:permissions:checkRoleForAgencyOnProject", "iam:permissions:checkRoleForAgencyOnDomain", "iam:roles:createRole", "iam:roles:listRoles", "iam:roles:getRole" ], "Effect": "Allow" } ] } 单击确定,完成自定义策略的创建 选择左侧导航栏的“用户组”,单击对应用户组进入用户组详情。 单击“授权记录“页签,单击“授权“按钮。 进入“授权--选择策略“页面,勾选步骤1中创建的策略,单击”下一步” 在”授权--设置最小授权范围”页面,选择”所有资源”,单击”确定”,完成授权。 方法2:为IAM用户所在的用户组授予Security Administrator的权限 登录IAM控制台,选择左侧导航栏的“用户组”,单击对应用户组进入用户组详情。 在“授权记录”页签下单击“授权”,搜索“Security Administrator”然后选择“Security Administrator”策略,单击”下一步”。 注:该权限具有委托、角色、用户管理等所有功能,权限范围大,请按实际需要分配。 在”授权--设置最小授权范围”页面,选择”所有资源”,单击”确定”,完成授权。 父主题: 方案咨询
  • 热门问题 设备管理服务和设备接入服务合一后的差异点是什么? 如何获取对接物联网平台的地址? 如何获取新域名和老域名接入的地址/证书? 新旧域名接入的鉴权方式有什么区别? 命令/属性下发总是超时? 应用侧如何获取appid和secret? Java SDK中有多个demo,该参考哪一个demo? C版 SDK中有多个demo,该参考哪一个demo? 如果是TCP协议,或者自定义协议如何接入平台? 设备显示上报数据成功,在控制台未看到数据? 应用服务器调用接口失败怎么处理? 应用服务器如何获取设备上报到物联网平台的数据? 如何制作订阅推送调测证书? 调用订阅接口时,回调地址如何获取? 订阅后消息推送失败如何处理? 物联网卡无法正常接入设备接入平台? 为何上报中文数据,平台会乱码呈现?
  • 在线开发的插件部署失败如何处理? 问题描述 用户在插件开发界面开发好了编解码插件,单击部署按钮部署失败了 可能原因 如果插件下载成功,但是部署失败,则可能是网络问题导致 如果插件下载失败,则部署失败的原因如下: 同类消息的(例如:两种数据上报的消息)messageId的值设置重复或在消息中的位置不一致。 messageId的数据类型设置为非int型。 存在字段的默认值设置为非16进制数。 存在字段名字设置为java关键字,比如type、int等 解决方法 插件如果可以成功下载,但是部署失败,请检查网络状态,并重试。 如果插件下载失败,请排查插件定义是否符合规范。
  • 在线开发插件中地址域(messageId)如何使用? 当有相同类型的消息时(例如:两种数据上报的消息),需要添加地址域字段,用于区分不同的消息,且该字段在字段列表的位置必须一致。场景如下: 有两条及以上的数据上报消息或命令下发消息。 命令响应消息可看作一种数据上报消息,因此如果存在命令响应消息,则需要在数据上报消息中添加地址域。 数据上报响应消息可看作一种命令下发消息,因此如果存在数据上报响应消息,则需要在命令下发消息中添加地址域。
  • 在线开发的插件中如何实现命令下发响应? 设备在接收到命令后,可以上报两类消息:ACK和命令下发响应。ACK用于表示命令已经到达设备,命令下发响应用于表示设备执行命令的结果。如果需要设备在接到命令后,需要返回命令下发响应,则: 需要在数据上报消息和命令响应消息中均定义地址域字段(messageId),并且该字段在两种消息的字段列表中的位置必须相同,使编解码插件可以对数据上报消息和命令响应消息进行区分。 需要在命令下发消息和命令响应消息中定义响应标识字段(mid),并且该字段在两种消息的字段列表中的位置必须相同,使编解码插件可以将命令下发消息和对应的命令响应消息进行关联。
  • 常见的软/固件升级错误有哪些? 在软/固件升级时,可以在“执行详情”的任务列表中查看错误描述,常见错误描述如下: 表1 软固件升级错误描述 失败原因 原因解释 处理建议 Device Abnormal is not online 设备未在线 请检查设备侧是否在线。 Task Conflict 任务冲突 请检查当前设备是否有软件升级、固件升级正在进行。 Waiting for the device online timeout 等待设备上线超时 请检查设备侧是否上线。 Waiting for report cellId timeout 等待上报cellId超时 请通过模组日志检查设备侧是否上报的小区ID。 Waiting for report device firmware version timeout 等待上报设备固件版本超时 请通过模组日志检查设备侧是否上报了固件版本号。 Wait for the device to report upgrade result timeout 等待设备上报升级结果超时 请通过模组日志检查设备侧是否上报了升级结果。 Updating timeout and query device version for check timeout 等待升级结果超时,且等待设备版本信息超时 请通过模组日志检查设备侧是否上报升级结果及上报设备版本信息。 Waiting for device downloaded package timeout 等待设备下载固件包超时 请通过模组日志检查设备侧是否下载固件包。 Integrity check failure for new downloaded package 下载的固件包完整性校验失败 请通过模组日志检查设备下载的固件包是否完整。 Unsupported package type 固件包类型不支持 请通过模组日志检查设备状态和厂商提供的固件包是否正确。 Not enough storage for the new firmware package 下载的固件包存储空间不足 请检查设备存储。 Out of memory during downloading process 下载过程中内存不足 请检查设备内存。 Connection lost during downloading process 下载过程中连接断开 请检查设备连接状态。 Invalid URI URI不可用 检查设备侧的固件包下载地址是否正确。 Firmware update failed 固件更新失败 请通过模组日志检查设备侧。
共100000条