更新时间:2024-07-01 GMT+08:00
分享

设备绑定

接口功能

设备第一次接入物联网平台时需要进行绑定操作,上层应用通过调用该接口传入设备序列号或者MAC地址以及设备信息来绑定到物联网平台。

在绑定前需要调用绑定配置接口设置物联网平台的IP与端口,对应参数配置为EN_IOTA_CFG_IOCM_ADDREN_IOTA_CFG_IOCM_PORT

设备绑定是指设备第一次接入物联网平台的过程,需要开发者先在物联网平台注册直连设备,之后在设备上发起绑定操作,将设备绑定到物联网平台上。如果未在物联网平台注册该设备,则绑定操作会失败,Agent Lite将会等待一段时间继续尝试。

接口描述

1
HW_INT IOTA_Bind(const HW_CHAR *pcVerifyCode, const ST_IOTA_DEVICE_INFO *pstInfo);

参数说明

字段

必选/可选

类型

描述

pcVerifyCode

必选

String

设备绑定验证码,pcVerifyCode必须带结束符‘\0’。

  • 如果通过控制台注册设备,则pcVerifyCode填写为设备注册时设置的preSecret(预置密钥)。
  • 如果通过开发中心注册设备,则pcVerifyCode填写为设备注册时设置的nodeId(设备标识)。

pstInfo

必选

ST_IOTA_DEVICE_INFO

设备信息,pstInfo结构体中的成员必须带结束符‘\0’。

ST_IOTA_DEVICE_INFO:

字段

必选/可选

类型

描述

pcNodeId

必选

String

关键参数,对接平台的网关下设备唯一标识,设备填写,平台用于判重。

pcName

可选

String

设备名称。

pcDescription

可选

String

设备描述。

pcManufacturerId

必选

String

厂商ID。

pcManufacturerName

可选

String

厂商名。

pcMac

可选

String

设备MAC地址。

pcLocation

可选

String

设备的位置。

pcDeviceType

必选

String

设备类型。

pcModel

必选

String

型号。

  • 直连设备:与Profile中定义的model保持一致即可。
  • Z-Wave设备: ProductType + ProductId,格式(使用16 进制): XXXX-XXXX 补0对齐,如001A-0A12,其他协议再定。

pcSwVersion

可选

String

软件版本。

Z-Wave:主版本号.次版本号, 如:1.1

pcFwVersion

可选

String

固件版本。

pcHwVersion

可选

String

硬件版本。

pcProtocolType

必选

String

协议类型 :Z-Wave。

pcBridgeId

可选

String

表示设备通过哪个Bridge接入平台。

pcStatus

可选

String

表示设备是否在线。

  • ONLINE 在线。
  • OFFLINE 离线。

statusDetail

可选

String

状态详情,如果pcStatus不为空,则该参数必选。

参数值:

  • 无:NONE。
  • 配置等待:CONFIGURATION_PENDING。
  • 通信错误:COMMUNICATION_ERROR。
  • 配置错误:CONFIGURATION_ERROR。
  • 桥接器离线:BRIDGE_OFFLINE。
  • 固件升级:FIRMWARE_UPDATING。
  • 循环任务:DUTY_CYCLE。
  • 未激活:NOT_ACTIVE。

pcMute

可选

String

表示设备是否被屏蔽。

  • TRUE
  • FALSE

接口返回值

参见函数标准返回值

此返回值是调用接口的同步返回结果,返回0只是说明接口调用成功,并不说明绑定成功,绑定成功需要收到IOTA_TOPIC_BIND_RSP广播。

当前绑定流程的重试策略为:如果绑定失败,则30秒后继续进行重试,如果重试超过5次(总计尝试超过6次),则返回失败,不再进行重试。如果想要重新发起绑定,建议让用户重启设备。

返回结果

广播名称

广播参数

成员

描述

IOTA_TOPIC_BIND_RSP

HW_MSG对象

EN_IOTA_BIND_IE_TYPE

绑定返回结果。

EN_IOTA_BIND_IE_TYPE:

枚举项

枚举值

类型

描述

EN_IOTA_BIND_IE_RESULT

0

EN_IOTA_BIND_RESULT_TYPE

绑定结果。

EN_IOTA_BIND_IE_DEVICEID

1

String

平台分配的逻辑设备ID。

EN_IOTA_BIND_IE_DEVICESECRET

2

String

设备接入的鉴权密钥。

EN_IOTA_BIND_IE_APPID

3

String

开发者应用ID。

EN_IOTA_BIND_IE_IOCM_ADDR

4

String

服务器地址。

EN_IOTA_BIND_IE_IOCM_PORT

5

unsigned int

服务器端口。

EN_IOTA_BIND_IE_MQTT_ADDR

6

String

MQTT服务器地址。

EN_IOTA_BIND_IE_MQTT_PORT

7

unsigned int

MQTT服务器端口。

EN_IOTA_BIND_RESULT_TYPE:

枚举项

枚举值

描述

EN_IOTA_BIND_RESULT_SUCCESS

0

绑定成功。

EN_IOTA_BIND_RESULT_DEV_NOT_BIND

1

未扫码。

EN_IOTA_BIND_RESULT_VERIFYCODE_EXPIRED

2

验证码过期。

EN_IOTA_BIND_RESULT_FAILED

255

其余失败。

示例

调用IOTA_Bind()接口进行设备绑定。

1
2
3
4
5
6
7
8
9
//开发者调用该接口进行设备绑定 
ST_HW_DEVICE_INFO stDeviceInfo 
stDeviceInfo.pcNodeId = SN Number; 
stDeviceInfo.pcManufacturerId = Huawei; 
stDeviceInfo.pcDeviceType = Gateway; 
stDeviceInfo.pcModel = HW_GW101; 
stDeviceInfo.pcProtocolType = HuaweiM2M; 

IOTA_Bind(SN Number, &stDeviceInfo);

当设备成功绑定之后,Agent Lite会返回给UI如下几个参数,需要UI进行持久化存储,设备登录前需要提前进行配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//注册广播接收处理函数 
HW_BroadCastReg(IOTA_TOPIC_BIND_RSP, Device_RegResultHandler);
// 开发者注册该函数处理绑定结果 
HW_iNT Device_RegResultHandler(HW_UiNT uiCookie, HW_MSG pstMsg) 
{
    HW_cHAR *pcDeviceId;
    HW_cHAR *pcDeviceSecret;
    HW_cHAR *pcAppId;
    HW_cHAR *pcIoCMServerAddr;
    HW_UiNT uiIoCMServerPort;
    HW_cHAR *pcMqttServerAddr;
    HW_UiNT uiMqttServerPort;
    If (HW_SUCCESS != HW_MsgGetUint(pstMsg, EN_IOTA_BIND_IE_RESULT, 0)) 
    {
        Return 0;
    }
    pcDeviceId = HW_MsgGetStr(pstMsg, EN_IOTA_BIND_IE_DEVICEID);
    pcDeviceSecret = HW_MsgGetStr(pstMsg, EN_IOTA_BIND_IE_DEVICESECRET);
    pcAppId = HW_MsgGetStr(pstMsg, EN_IOTA_BIND_IE_APPID);
    pcIoCMServerAddr = HW_MsgGetStr(pstMsg, EN_IOTA_ BIND_IE_IOCM_ADDR );
    uiIoCMServerPort = HW_MsgGetUint(pstMsg, EN_IOTA_BIND_IE_IOCM_PORT, 0);
    pcMqttServerAddr = HW_MsgGetStr(pstMsg, EN_IOTA_ BIND_IE_IOCM_ADDR );
    uiMqttServerPort = HW_MsgGetUint(pstMsg, EN_IOTA_BIND_IE_IOCM_PORT, 0);
    Config_save(DeviceId,pcDeviceId);
    Config_save(DeviceSecret,pcDeviceSecret);
    Config_save(AppId,pcAppId);
    Config_save(IoCMAddr,pcIoCMServerAddr);
    Config_save(IoCMPort,pcIoCMServerPort);
    Config_save(MqttAddr,pcMqttServerAddr);
    Config_save(MqttPort,pcMqttServerPort);
    return 0;
}

相关文档