设备接入 IoTDA设备接入 IoTDA

更新时间:2021/09/06 GMT+08:00
分享

创建设备

接口说明

应用服务器可调用此接口在物联网平台创建一个设备,仅在创建后设备才可以接入物联网平台。

  • 该接口支持使用gateway_id参数指定在父设备下创建一个子设备,并且支持多级子设备,当前最大支持二级子设备。
  • 该接口同时还支持对设备进行初始配置,接口会读取创建设备请求参数product_id对应的产品详情,如果产品的属性有定义默认值,则会将该属性默认值写入该设备的设备影子中。
  • 用户还可以使用创建设备请求参数shadow字段为设备指定初始配置,指定后将会根据service_id和desired设置的属性值与产品中对应属性的默认值比对,如果不同,则将以shadow字段中设置的属性值为准写入到设备影子中。

调试

您可以在API Explorer中调试该接口。

URI

请求方法

POST

URI

/v5/iot/{project_id}/devices

传输协议

HTTPS

请求参数

名称

必选/可选

类型

位置

说明

X-Auth-Token

必选

String

Header

参数说明:用户Token。通过调用IAM服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证

Instance-Id

可选

String

Header

参数说明:实例ID。物理多租下各实例的唯一标识,一般华为云租户无需携带该参数,仅在物理多租场景下从管理面访问API时需要携带该参数。

project_id

必选

String

Path

参数说明:项目ID。获取方法请参见 获取项目ID

device_id

可选

String

Body

参数说明:设备ID,用于唯一标识一个设备。如果携带该参数,平台将设备ID设置为该参数值;如果不携带该参数,设备ID由物联网平台分配获得,生成规则为"product_id" + "_" + "node_id"拼接而成。

取值范围:长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。

node_id

必选

String

Body

参数说明:设备标识码,通常使用IMEI、MAC地址或Serial No作为node_id。

设备标识码长度为1到64个字符,包含英文字母、数字、连接号“-”和下划线“_”。

注意:NB设备由于模组烧录信息后无法配置,所以NB设备会校验node_id全局唯一。

取值范围:长度不超过64,只允许字母、数字、下划线(_)、连接符(-)的组合。

device_name

可选

String

Body

参数说明:设备名称。

取值范围:长度不超过256,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合

product_id

必选

String

Body

参数说明:设备关联的产品ID,用于唯一标识一个产品模型,在管理门户导入产品模型后由平台分配获得。

取值范围:长度不超过36,只允许字母、数字、下划线(_)、连接符(-)的组合。

auth_info

可选

AuthInfo Object

Body

参数说明:设备的接入认证信息。

description

可选

String

Body

参数说明:设备的描述信息。

取值范围:长度不超过2048,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合

gateway_id

可选

String

Body

参数说明:网关ID,用于标识设备所属的父设备,即父设备的设备ID。携带该参数时,表示在该父设备下创建一个子设备,这个子设备不与平台直连,此时必须保证这个父设备在平台已存在,创建成功后子设备的gateway_id等于该参数值;不携带该参数时,表示创建一个和平台直连的设备,创建成功后设备的device_id和gateway_id一致。注意:当前平台最多支持二级子设备。

取值范围:长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。

app_id

可选

String

Body

参数说明:资源空间ID。此参数为非必选参数,存在多资源空间的用户需要使用该接口时,建议携带该参数指定创建的设备归属到哪个资源空间下,否则创建的设备将会归属到默认资源空间下。

取值范围:长度不超过36,只允许字母、数字、下划线(_)、连接符(-)的组合。

extension_info

可选

Object

Body

参数说明:设备扩展信息。用户可以自定义任何想要的扩展信息,如果在创建设备时为子设备指定该字段,将会通过MQTT接口“平台通知网关子设备新增“将该信息通知给网关。字段值大小上限为1K。

shadow

可选

List<InitialDesired>

Body

参数说明:设备初始配置。用户使用该字段可以为设备指定初始配置,指定后将会根据service_id和desired设置的属性值与产品中对应属性的默认值比对,如果不同,则将以shadow字段中设置的属性值为准写入到设备影子中。service_id的值和desired内的属性必须是profile中定义的。

表1 AuthInfo

名称

必选/可选

类型

说明

auth_type

可选

String

参数说明:鉴权类型。注意:不填写auth_type默认为密钥认证接入方式(SECRET)。

取值范围

  • SECRET:使用密钥认证接入方式。
  • CERTIFICATES:使用证书认证接入方式。

secret

可选

String

参数说明:设备密钥,认证类型使用密钥认证接入(SECRET)可填写该字段。注意:NB设备密钥由于协议特殊性,只支持十六进制密钥接入;查询设备列表接口不返回该参数。

取值范围:长度不低于8不超过32,只允许字母、数字、下划线(_)、连接符(-)的组合。

fingerprint

可选

String

参数说明:证书指纹,认证类型使用证书认证接入(CERTIFICATES)可填写该字段,注册设备时不填写该字段则取第一次设备接入时的证书指纹。

取值范围:长度为40的十六进制字符串或者长度为64的十六进制字符串。

secure_access

可选

Boolean

参数说明:指设备是否通过安全协议方式接入。默认值为true。

取值范围

  • true:通过安全协议方式接入。
  • false:通过非安全协议方式接入。非安全接入的设备存在被仿冒等安全风险,请谨慎使用。

timeout

可选

Integer

参数说明:设备接入的有效时间,单位:秒,默认值:0

若设备在有效时间内未接入物联网平台并激活,则平台会删除该设备的注册信息。若设置为“0”,则表示平台不会删除该设备的注册信息(建议填写为“0”)。

注意:只有注册设备接口或者修改设备接口修改timeout时返回该参数。

表2 InitialDesired

名称

必选/可选

类型

说明

service_id

必选

String

参数说明:设备的服务ID,在设备关联的产品模型中定义。

取值范围:长度不超过32,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。

desired

必选

Object

参数说明:设备初始配置属性数据,Json格式,里面是一个个键值对,每个键都是产品模型中属性的参数名(property_name),目前如样例所示只支持一层结构;这里设置的属性值与产品中对应属性的默认值比对,如果不同,则将以该字段中设置的属性值为准写入到设备影子中;如果想要删除整个desired可以填写空object(例如"desired":{}),如果想要删除某一个属性期望值可以将属性置位null(例如{"temperature":null})

响应参数

名称

类型

说明

app_id

String

资源空间ID。

app_name

String

资源空间名称。

device_id

String

设备ID,用于唯一标识一个设备。在注册设备时直接指定,或者由物联网平台分配获得。由物联网平台分配时,生成规则为"product_id" + "_" + "node_id"拼接而成。

node_id

String

设备标识码,通常使用IMEI、MAC地址或Serial No作为node_id。

gateway_id

String

网关ID,用于标识设备所属的父设备,即父设备的设备ID。当设备是直连设备时,gateway_id与设备的device_id一致。当设备是非直连设备时,gateway_id为设备所关联的父设备的device_id。

device_name

String

设备名称。

node_type

String

设备节点类型。

  • ENDPOINT:非直连设备。
  • GATEWAY:直连设备或网关。
  • UNKNOWN:未知。

description

String

设备的描述信息。

fw_version

String

设备的固件版本。

sw_version

String

设备的软件版本。

device_sdk_version

String

设备的sdk信息。

auth_info

AuthInfo Object

设备的接入认证信息。

product_id

String

设备关联的产品ID,用于唯一标识一个产品模型。

product_name

String

设备关联的产品名称。

status

String

设备的状态。

  • ONLINE:设备在线。
  • OFFLINE:设备离线。
  • ABNORMAL:设备异常。
  • INACTIVE:设备未激活。
  • FROZEN:设备冻结。

create_time

String

在物联网平台注册设备的时间。格式:yyyyMMdd'T'HHmmss'Z',如20151212T121212Z。

tags

List<TagV5DTO>

设备的标签列表。

extension_info

Object

设备扩展信息。用户可以自定义任何想要的扩展信息,如果在创建设备时为子设备指定该字段,将会通过MQTT接口“平台通知网关子设备新增“将该信息通知给网关。

表3 AuthInfo

名称

类型

说明

auth_type

String

参数说明:鉴权类型。注意:不填写auth_type默认为密钥认证接入方式(SECRET)。

取值范围

  • SECRET:使用密钥认证接入方式。
  • CERTIFICATES:使用证书认证接入方式。

secret

String

参数说明:设备密钥,认证类型使用密钥认证接入(SECRET)可填写该字段。注意:NB设备密钥由于协议特殊性,只支持十六进制密钥接入;查询设备列表接口不返回该参数。

取值范围:长度不低于8不超过32,只允许字母、数字、下划线(_)、连接符(-)的组合。

fingerprint

String

参数说明:证书指纹,认证类型使用证书认证接入(CERTIFICATES)可填写该字段,注册设备时不填写该字段则取第一次设备接入时的证书指纹。

取值范围:长度为40的十六进制字符串或者长度为64的十六进制字符串。

secure_access

Boolean

参数说明:指设备是否通过安全协议方式接入。默认值为true。

取值范围

  • true:通过安全协议方式接入。
  • false:通过非安全协议方式接入。非安全接入的设备存在被仿冒等安全风险,请谨慎使用。

timeout

Integer

参数说明:设备接入的有效时间,单位:秒,默认值:0

若设备在有效时间内未接入物联网平台并激活,则平台会删除该设备的注册信息。若设置为“0”,则表示平台不会删除该设备的注册信息(建议填写为“0”)。

注意:只有注册设备接口或者修改设备接口修改timeout时返回该参数。

表4 TagV5DTO

名称

类型

说明

tag_key

String

参数说明:标签键,在同一资源下标签键唯一。绑定资源时,如果设置的键已存在,则将覆盖之前的标签值。如果设置的键值不存在,则新增标签。

取值范围:长度不超过64,只允许中文、字母、数字、以及_.-等字符的组合。

tag_value

String

参数说明:标签值。

取值范围:长度不超过128,只允许中文、字母、数字、以及_.-等字符的组合。

请求示例

POST https://{Endpoint}/v5/iot/{project_id}/devices
Content-Type: application/json
X-Auth-Token: ********
Instance-Id: ********

{
  "device_id" : "d4922d8a-6c8e-4396-852c-164aefa6638f",
  "node_id" : "ABC123456789",
  "device_name" : "dianadevice",
  "product_id" : "b640f4c203b7910fc3cbd446ed437cbd",
  "auth_info" : {
    "auth_type" : "SECRET",
    "secure_access" : true,
    "fingerprint" : "dc0f1016f495157344ac5f1296335cff725ef22f",
    "secret" : "3b935a250c50dc2c6d481d048cefdc3c",
    "timeout" : 0
  },
  "description" : "watermeter device",
  "gateway_id" : "d4922d8a-6c8e-4396-852c-164aefa6638f",
  "app_id" : "jeQDJQZltU8iKgFFoW060F5SGZka",
  "extension_info" : {
    "aaa" : "xxx",
    "bbb" : 0
  },
  "shadow" : [ {
    "desired" : {
      "temperature" : "60"
    },
    "service_id" : "WaterMeter"
  } ]
}

响应示例

Status Code: 201 Created

Content-Type: application/json

{
  "app_id" : "jeQDJQZltU8iKgFFoW060F5SGZka",
  "app_name" : "testAPP01",
  "device_id" : "d4922d8a-6c8e-4396-852c-164aefa6638f",
  "node_id" : "ABC123456789",
  "gateway_id" : "d4922d8a-6c8e-4396-852c-164aefa6638f",
  "device_name" : "dianadevice",
  "node_type" : "ENDPOINT",
  "description" : "watermeter device",
  "fw_version" : "1.1.0",
  "sw_version" : "1.1.0",
  "auth_info" : {
    "auth_type" : "SECRET",
    "secret" : "3b935a250c50dc2c6d481d048cefdc3c",
    "fingerprint" : "dc0f1016f495157344ac5f1296335cff725ef22f",
    "secure_access" : true,
    "timeout" : 0
  },
  "product_id" : "b640f4c203b7910fc3cbd446ed437cbd",
  "product_name" : "Thermometer",
  "status" : "INACTIVE",
  "create_time" : "20190303T081011Z",
  "tags" : [ {
    "tag_key" : "testTagName",
    "tag_value" : "testTagValue"
  } ],
  "extension_info" : {
    "aaa" : "xxx",
    "bbb" : 0
  }
}

错误码

HTTP状态码

错误码

错误码英文描述

错误码中文描述

处理建议

400

IOTDA.000008

Invalid input. Bad request, for more detail, refer to the error message.

请求的格式不正确,如json非法,mediaType不正确等。

请排查该请求的请求格式是否正确。

IOTDA.013000

The product does not exist.

产品不存在

请排查请求参数是否正确或产品是否已经在指定资源空间下注册

IOTDA.013002

The properties of deviceServiceCapability do not exist.

产品的属性不存在

请排查该产品是否有属性信息,若没有,可调用修改产品接口添加属性。

IOTDA.013003

Operation not allowed. The product is unavailable.

未知的产品类型

请排查设备是否有产品ID, 若没有,可调用修改设备信息接口添加产品ID。

IOTDA.014008

Invalid input. The nodeId is duplicated.

nodeId重复

请更换nodeId后再重试。

IOTDA.014009

Invalid input. The deviceName is duplicated.

deviceName重复

请更换deviceName后再重试。

IOTDA.014010

Invalid input. The secretDevice cannot be empty when authType is SECRET.

当authType是SECRET时, secretDevice不能为空

请联系华为工程师分析解决。

IOTDA.014011

Invalid input. The secretEncryptionType cannot be empty when authType is MQTT.

当authType为MQTT时,secretEncryptionType不能为空

请联系华为工程师分析解决

IOTDA.014012

Invalid input. The pskDevice cannot be empty when authType is PSK.

authType为PSK时,pskDevice不能为空

请联系华为工程师分析解决

IOTDA.014013

Invalid input. The isSecure must be true.

isSecure参数值必须为true

请将isSecure参数设置成true。

IOTDA.014023

Gateway and sensor auth type is inconsistent

网关和子设备的认证类型不一致。

请保证网关和子设备的认证类型一致。

IOTDA.014025

Invalid input. Invalid parameter 'serviceId'.

serviceId不合法

请排查请求参数serviceId是否符合华为云文档要求

IOTDA.014027

Invalid input. The initialization cannot be empty when mode is INITIALIZATION.

mode为INITIALIZATION时initialization参数不能为空

请联系华为工程师分析解决。

IOTDA.014031

Invalid input. The device already exists.

设备已存在

请更换参数后再重试。

IOTDA.014034

Invalid input. The serviceId or eventType do not match.

serviceId或eventType不匹配

请检查请求参数serviceId与eventType是否与profile中定义的相同。

IOTDA.014035

Invalid input. The size of extension_info has reach or exceed 1k.

extension_info字段大小超过1K

请将extension_info参数的大小限制在1K以内。

403

IOTDA.000022

Operation not allowed. The user does not have the permission

该用户没有权限

请排查该用户是否有权限访问。

IOTDA.001000

The application does not exist.

该应用不存在

请确定是否已在平台注册应用并检查应用ID是否正确。

IOTDA.001002

Operation not allowed. The application has not been authorized.

该应用没有权限访问

请检查该应用是否已被授权。

IOTDA.013004

Operation not allowed. You have no Write permission.

您没有可写的权限

请排查您的产品属性是否是可写的,若不是,可调用修改产品的接口将属性改成可写。

IOTDA.014019

Operation not allowed. The number of user's device has reached the limit.

用户下的设备数量达到上限

请删除无用设备或联系华为工程师分析解决。

IOTDA.014020

Operation not allowed. The number of device bound to this application has reached the limit.

应用下的设备数量超过最大上限

请删除无用设备或联系华为工程师分析解决。

IOTDA.014021

Operation not allowed. The number of device has reached the limit of ordered package.

套餐下的设备数量超过最大上限

请删除无用设备或联系华为工程师分析解决。

IOTDA.014022

Operation not allowed. The number of license resource has reached the limit.

许可证资源数量已达到上限

请联系华为工程师分析解决。

IOTDA.014026

Operation not allowed. The number of nonSecure device has reached the limit.

非安全设备的数量已达到上限

请删除无用的非安全设备或联系华为工程师分析解决。

IOTDA.014036

Operation not allowed. The product of this device has not defined service capabilities

该设备的产品未定义设备服务能力

请使用修改产品接口将该产品添加设备服务能力。

404

IOTDA.014000

The device does not exist.

设备不存在

请排查请求参数是否有误并确认是否有在平台注册该设备。

分享:

    相关文档

    相关产品