设备管理 IoTDM(联通用户专用)-Agent Lite SDK使用指南(Android)(联通用户专用):绑定和登录

时间:2023-11-01 16:20:05

绑定和登录

设备或网关第一次接入IoT联接管理平台时需要进行绑定操作,从而将设备或网关与平台进行关联。开发者通过传入设备序列号以及设备信息,将设备或网关绑定到 物联网平台

设备或网关绑定成功后或重启后,需要进行登录的流程,在设备或网关成功登录物联网平台后,才可以进行其它服务操作,比如接入其他传感器,数据上报等等。如果设备或网关登录成功,那么设备或网关在平台的状态显示为已在线。

  1. 修改绑定参数。

    绑定时使用的设备固有信息(如设备型号等)是从“config.properties”文件中读取的,所以需要修改./app/src/main/assets/conf目录下config.properties文件中的如下信息:

    • “platformIP”:物联网平台的设备对接地址(MQ TTS ),可参考平台对接信息获取。
    • “verifyCode”(设备的标识)和必要的设备信息,包括“Manufacture”(厂商Id)、“deviceType”(设备类型)、“HardwareModel”(设备模型)和“protocolType”(协议类型),其中“manufacturerId”(厂商Id)、“deviceType”(设备类型)、“HardwareModel”(设备模型)和“protocolType”(协议类型)与Profile文件中的定义保持一致。
      • 如果通过“设备管理服务控制台”注册设备,则“verifyCode”填写为设备注册时的“preSecret”(预置密钥)。
      • 如果通过开发中心注册设备,则“verifyCode”填写为设备注册后返回的“nodeId”(设备标识)。

    “config.properties”文件中设备固有示例:

    platformIP=100.100.100.100mqttPort=8883httpPort=8943verifyCode=0123456789Manufacturer=HuaweiHardwareModel=AgentLite01deviceType=GatewayprotocolType=HuaweiM2M

  2. 绑定设备。

    调用API接口BindConfig.setConfig()设置绑定配置。

    123456
    private void startBind() {    ....    configBindPara();    registerBindReceiver();    ...}
    1234
    private void configBindPara() {    BindConfig.setConfig(BindConfig.BIND_CONFIG_ADDR, AgentLiteUtil.get(ConfigName.platformIP));    BindConfig.setConfig(BindConfig.BIND_CONFIG_PORT, AgentLiteUtil.get(ConfigName.httpPort));}

    注册广播接收器对设备绑定结果进行相应处理。

    1
    LocalBroadcastManager.getInstance(this).registerReceiver(mBindStatusReceiver, new IntentFilter(BindService.TOPIC_BINDDEVICE_RSP));

    调用API接口BindService .bind(String verifyCode, IotaDeviceInfo deviceInfo)绑定设备,主要入参为“verifyCode”(设备验证码)和必要的设备信息,包括“nodeId”(设备标识码)、“Manufacture”(厂商Id)、“deviceType”(设备类型)、“HardwareModel”(设备模型)和“protocolType”(协议类型),其中“verifyCode”的值与“nodeId”保持一致。

     1 2 3 4 5 6 7 8 9101112131415
    private void startBind() {    LogUtil.i(this, TAG, "startBind");    String nodeId = AgentLiteUtil.get(ConfigName.verifyCode);    String verifyCode = AgentLiteUtil.get(ConfigName.verifyCode);    String manufacturerId = AgentLiteUtil.get(ConfigName.Manufacturer);    String deviceType = AgentLiteUtil.get(ConfigName.deviceType);    String model = AgentLiteUtil.get(ConfigName.HardwareModel);    String protocolType = AgentLiteUtil.get(ConfigName.protocolType);    IotaDeviceInfo deviceInfo = new IotaDeviceInfo(nodeId, manufacturerId, deviceType, model, protocolType);    ...    BindService.bind(verifyCode, deviceInfo);}

    设备或网关绑定成功,后续就不需要再绑定了,除非设备或网关被删除,才需要重新绑定。

    设备绑定成功会收到广播,广播内容请参考Agent Lite API接口文档中设备绑定接口的返回结果说明和demo中mBindStatusReceiver函数的处理。

  3. 配置登录参数。

    登录前需要通过参数配置接口LoginConfig.setConfig()传入所需的登录信息。

    • “设备Id”(即网关Id, LOG IN_CONFIG_DEVICEID”),“appId”“LOGIN_CONFIG_APPID”)和“密码”“LOGIN_CONFIG_SECRET”),这些信息是都是从网关绑定成功的广播中得到的。
    • “平台HTTP地址”“LOGIN_CONFIG_IOCM_ADDR”)和“MQTT地址”“LOGIN_CONFIG_MQTT_ADDR”)一般是同一个地址,可以从绑定成功的广播中得到。一般情况下,这个地址和Agent Lite设备或网关对接的平台地址一致。
    • 绑定成功的广播参数获取可以参考mBindStatusReceiver函数的处理。
    123456789
    private void configLoginPara() {    LoginConfig.setConfig(LoginConfig.LOGIN_CONFIG_DEVICEID, GatewayInfo.getDeviceID());    LoginConfig.setConfig(LoginConfig.LOGIN_CONFIG_APPID, GatewayInfo.getAppID());    LoginConfig.setConfig(LoginConfig.LOGIN_CONFIG_SECRET, GatewayInfo.getSecret());    LoginConfig.setConfig(LoginConfig.LOGIN_CONFIG_IOCM_ADDR, GatewayInfo.getHaAddress());    LoginConfig.setConfig(LoginConfig.LOGIN_CONFIG_IOCM_PORT, "8943");    LoginConfig.setConfig(LoginConfig.LOGIN_CONFIG_MQTT_ADDR, GatewayInfo.getHaAddress());    LoginConfig.setConfig(LoginConfig.LOGIN_CONFIG_MQTT_PORT, "8883");}

  4. 设备登录。

    注册广播接收器对设备登录结果进行相应处理。

    1
    LocalBroadcastManager.getInstance(this).registerReceiver(LoginConnectReceiver, new IntentFilter(LoginService.TOPIC_LOGIN_CONNECTED));

    调用LoginService.login()进行直连设备登录,具体API的参数使用参考Agent Lite接口文档中设备登录接口的说明。

    12345
    private void startLogin() {    LogUtil.i(this, TAG, "startLogin");    configLoginPara();    LoginService.login();}

support.huaweicloud.com/devg-IoT/iot_02_5086.html