典型场景
在设备接入物联网平台前,第三方应用需要调用此接口在物联网平台注册设备,并把设备的唯一标识码(如IMEI)设置为设备接入平台的验证码。在设备接入物联网平台时携带设备唯一标识,完成设备的接入认证。
接口功能
支持第三方应用在物联网平台注册设备,完成注册后设备方可接入物联网平台。
接口描述
Device::registerDevice($devicereginfoArray);
接口所属类
iotyun\huaweiiot\Device;
参数说明
$devicereginfoArray = array('platformIp' => '平台IP或者域名','platformPort' => '平台端口','appId' => '应用appId','accessToken' => '你系统存储的accessToken','rddInArray' => array('deviceInfoArray' => array('manufacturerId' => '','manufacturerName' => '','deviceType' => '','model' => '','protocolType' => ''),'imsi' => '','isSecure' => '','verifyCode' => '','nodeId' => '','endUserId' => '',//'psk' => '','timeout' => 0,'productId' => ''));
| 参数 | 必选/可选 | 类型 | 描述 |
|---|---|---|---|
| platformIp | 必选 | String(256) | 物联网平台的IP或者域名。 |
| platformPort | 必选 | String(256) | 物联网平台的端口。 |
| appId | 必选 | String(256) | 如果是本应用的设备,此参数值可以填写null,否则填写授权应用的appId。 |
| accessToken | 必选 | String(256) | 您当前有效的accessToken。 |
| rddInArray | 必选 | array | 具体参见rddInArray的描述。 |
rddInArray:
| 参数 | 必选/可选 | 类型 | 描述 |
|---|---|---|---|
| deviceInfoArray | 可选 | array | 设备信息。见下方deviceInfoArray说明。 |
| imsi | 可选 | String(1-64) | NB-IoT终端的IMSI。 |
| isSecure | 可选 | Boolean | 指定设备是否为安全设备,默认值为“false”。 - “true”:安全设备 - “false”:非安全设备 |
说明:
如果用户需要注册安全设备,isSecure参数必须填写。 |
| verifyCode | 可选 | String(256) | 设备验证码,全局唯一,建议与nodeId设置成相同值。若在请求中指定verifyCode,则响应中返回请求中指定的verifyCode;若请求中不指定verifyCode,则由物联网平台自动生成。
在NB-IoT方案中,verifyCode为必填参数,且必须与nodeId设置成相同值。 |
| nodeId | 必选 | String(256) | 设备的唯一标识,必须与设备上报的设备标识一致。通常使用MAC地址,Serial No或IMEI作为nodeId。
说明:
使用IMEI作为nodeId时,根据不同厂家的芯片有不同填写要求。
- 高通芯片设备的唯一标识为urn:imei:xxxx,xxxx为IMEI号
- 海思芯片设备的唯一标识为IMEI号
- 其他厂家芯片的设备唯一标识请联系模组厂家确认。
|
| endUserId | 可选 | String(256) | 终端用户ID。
在NB-IoT方案中,endUserId设置为设备的IMSI号。在Smarthome解决方案中, endUserId设置为App账号。 |
| psk | 可选 | String(8~32) | 请求中指定psk,则平台使用指定的psk;请求中不指定psk,则由平台生成psk。取值范围是a-f、A-F、0-9组成的字符串。 |
| timeout | 可选 | Integer(>=0) | 超时时间。当调用API接口对设备开户,在超时时间内可绑定设备,若超过timeout时间且未绑定设备,则会删除超时的开户信息。
取值范围:0~2147483647。若填写为“0”,则表示设备验证码不会失效(建议填写为“0”)。
默认值:“0”(默认值可配置,具体配置值请咨询物联网平台运维人员。)
单位:秒。 |
| productId | 可选 | String(256) | 设备所属的产品ID。 |
deviceInfoArray:
| 参数 | 必选/可选 | 类型 | 描述 |
|---|---|---|---|
| manufacturerId | 可选 | String(256) | 厂商ID,唯一标识一个厂商。 |
| manufacturerName | 可选 | String(256) | 厂商名称。 |
| deviceType | 可选 | String(256) | 设备类型,大驼峰命名方式,如MultiSensor、ContactSensor、CameraGateway。 |
| model | 必选 | String(256) | 设备的型号。 Z-Wave:ProductType + ProductId,16 进制格式 XXXX-XXXX 补0对齐,如:001A-0A12,其他协议的格式待定。 |
| protocolType | 可选 | String(256) | 设备使用的协议类型,当前支持的协议类型:CoAP,huaweiM2M,Z-Wave,ONVIF,WPS,Hue,WiFi,J808,Gateway,ZigBee,LWM2M。 |
返回值
RegDirectDeviceOutDTO
| 参数 | 类型 | 描述 |
|---|---|---|
| deviceId | String(256) | 设备ID,用于唯一标识一个设备。 |
| verifyCode | String(256) | 设备验证码,设备可以通过验证码完成物联网平台的接入认证。若在请求中指定verifyCode,则响应中返回请求中指定的verifyCode;若请求中不指定verifyCode,则由物联网平台自动生成。 |
| timeout | Integer | 验证码有效时间,单位秒,设备需要在有效时间内接入物联网平台。若为“0”,则表示设备验证码不会失效。 |
| psk | String(32) | 随机psk参数,若请求中携带了psk,则使用请求中的psk,否则由平台生成随机psk参数。 |
错误码
| Http状态码 | 错误码 | 错误描述 | 说明 |
|---|---|---|---|
| 200 | 103028 | The license pool resources. | License资源用尽。 |
| 400 | 100003 | Invalid verify code. | 验证码无效。 处理建议:请检查接口请求中的verifyCode是否有误。若请求参数中未带verifyCode,请联系物联网平台维护人员处理。 |
| 400 | 100007 | Bad request message. | 参数不合法。 处理建议:deviceId未赋值,请参考请求参数说明填写请求。 |
| 400 | 100416 | The device has already been binded. | 设备已经绑定。 处理建议:请检查设备是否已经注册。 |
| 400 | 100426 | The nodeId is duplicated. | nodeId重复。 处理建议:请检查接口请求中nodeId是否有误。 |
| 400 | 50400 | The input is invalid. | 输入参数无效。 处理建议:请检查接口调用请求中携带参数的合法性。 |
| 401 | 100025 | AppId for auth not exist. | 获取不到appId鉴权信息。 处理建议: - 请检查请求结构体的Header头域中是否给字段app_key赋值。 - 若通过HTTP调用,请联系物联网平台维护人员确认Header头域中放置appId的字段名是app_key还是x-app-key。 |
| 403 | 100203 | The application is not existed. | 应用不存在。 处理建议: - 请检查HTTP请求头域中携带的appId是否有误。 - 请检查请求路径(url)中传入的appId是否有误。 |
| 403 | 100217 | The application hasn’t been authorized. | 应用未被授权。 处理建议:若非应用授权场景,请确认请求参数中的appId为空。 |
| 403 | 1010009 | app throttle exceed. | 应用调用接口过于频繁,超过流控值(默认值是100次/60s)。 处理建议:联系物联网平台维护人员调大流控阈值或者控制接口的调用频率。 |
| 403 | 1010005 | Invalid access token or appId. | 错误的token信息。 处理建议:请检查接口请求中所携带的accessToken是否有误。 |
| 403 | 600002 | The product not existed. | 产品不存在。 处理建议:物联网平台未找到productId对应的产品,请检查productId是否有误。 |
| 500 | 100001 | Internal server error. | 服务内部处理错误。 处理建议:物联网平台内部错误,请联系物联网平台维护人员处理。 |
| 500 | 100203 | The application is not existed. | 授权应用不存在。 处理建议: - 请检查HTTP请求头域中携带的appId是否有误。 - 请检查请求路径(url)中传入的appId是否有误。 |
| 500 | 100412 | The amount of device has reached the limit. | 当前应用下设备数量达到上限。 处理建议:请检查当前应用下的设备数量是否已达到所申请资源的上限。 |
| 500 | 100441 | The amount of nonSecure device has reached the limit. | 非安全设备数量已达到上限。 处理建议: - 请注册安全设备(“isSecure”参数设置为“true”),即设备使用安全协议方式接入。 - 请联系物联网平台维护人员处理。 |
| 500 | 103026 | The license is not exist. | License不存在。 处理建议:物联网平台内部License问题,请联系物联网平台维护人员处理。 |
| 500 | 50252 | Internal server error. | 服务器运行内部错误。 处理建议:物联网平台内部错误,请联系物联网平台维护人员处理。 |
使用说明
经过测试,如果同一nodeId多次注册设备,物联网平台会删除以前的设备,重新注册新的设备,原设备下的数据会丢失,因此如果不想删除原来设备重新添加,不要使用同一nodeId重复注册设备。
