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

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

绑定和登录

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

  1. 修改绑定参数。

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

    物联网平台的设备对接地址(MQTTS)和端口,可参考平台对接信息获取。

    123
    //设置配置参数private static final String  PLATFORM_IP = "100.100.100.100";private static final String  HTTPS_PORT = "8943";
    “verifyCode”(设备验证码)和必要的设备信息,包括“nodeId”(设备标识码)、“manufactureId”(厂商Id)、“deviceType”(设备类型)、“model”(设备模型)和“protocolType”(协议类型)。“verifyCode”的值与“nodeId”保持一致,“manufactureId”(厂商Id)、“deviceType”(设备类型)、“model”(设备模型)和“protocolType”(协议类型)与Profile文件中的定义保持一致。
    • 如果开发者通过“设备管理服务控制台”注册设备,则“verifyCode”填写为设备注册时的“preSecret”(预置密钥)。
    • 如果通过开发中心注册设备,则“verifyCode”填写为设备注册时设置的“nodeId”(设备标识)。
     1 2 3 4 5 6 7 8 91011
    public void bindAction() {System.out.println(" =============   start  bind ============== ");String nodeId = "1234568";String verifyCode = "1234568";String manufactrueId = "Huawei";String deviceType = "Gateway";String model = "AgentLite01";String protocolType = "LWM2M";deviceInfo = new IotaDeviceInfo(nodeId, manufactrueId, deviceType, model, protocolType);        ...}

  2. 绑定设备。

    注册观察者对设备绑定结果进行相应处理。

    123456
    //注册观察者AgentLiteBind agentLiteBind = AgentLiteBind.getInstance();BindService bindService = BindService.getInstance();bindService.registerObserver(agentLiteBind);//网关绑定agentLiteBind.bindAction();

    调用API接口BindConfig.setConfig()设置绑定配置,接着调用API接口BindService .bind(String verifyCode, IotaDeviceInfo deviceInfo)绑定设备。

    12345678
    public void bindAction() {    System.out.println(" =============   start  bind ============== ");    ...    //绑定配置    configBindPara();    //发起绑定请求    BindService.bind(verifyCode, deviceInfo);}
    1234567
    //绑定配置private static void configBindPara() {boolean res = false;res = BindConfig.setConfig(BindConfig.BIND_CONFIG_ADDR, PLATFORM_IP);res = BindConfig.setConfig(BindConfig.BIND_CONFIG_PORT, HTTPS_PORT);...}

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

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

  3. 修改登录参数。

    在demo的./src/main/AgentLiteLogin.java设置物联网平台的接入IP与端口。

    123
    private static final String  PLATFORM_IP = "100.100.100.100";private static final String  MQTTS_PORT = "8883";private static final String  HTTPS_PORT = "8943";

  4. 设备登录。

    注册观察者对设备登录结果进行相应处理。

    123456
    //注册观察者AgentLiteLogin agentLiteLogin = AgentLiteLogin.getInstance();LoginService loginService = LoginService.getInstance();loginService.registerObserver(agentLiteLogin);//网关登录agentLiteLogin.loginAction();

    调用API接口LoginConfig.setConfig()传入所需的登录信息,接着调用API接口LoginService.login()进行直连设备登录,具体API的参数使用参考Agent Lite接口文档中的设备登录接口说明。

    • “设备Id”(即网关Id, “LOGIN_CONFIG_DEVICEID”),“appId”“LOGIN_CONFIG_APPID”)和“密码”“LOGIN_CONFIG_SECRET”),这些信息是都是从网关绑定成功的通知中得到的。
    • “平台HTTP地址”“LOGIN_CONFIG_IOCM_ADDR”)和“MQTT地址”“LOGIN_CONFIG_MQTT_ADDR”)一般是同一个地址。
    12345
    public void loginAction() {    System.out.println(" =============   start  login ============== ");    configLoginPara();    LoginService.login();}
     1 2 3 4 5 6 7 8 9101112131415161718
    private static void configLoginPara() {    if(AgentLiteUtil.isStringEmpty(GatewayInfo.getDeviceID())                || AgentLiteUtil.isStringEmpty(GatewayInfo.getAppID())                || AgentLiteUtil.isStringEmpty(GatewayInfo.getSecret())){        String jsonStr = AgentLiteUtil.readToString("./workdir/gwbindinfo.json");        JsonObject json = new Gson().fromJson(jsonStr, JsonObject.class);        GatewayInfo.setDeviceID(json.get("deviceId").getAsString());        GatewayInfo.setAppID(json.get("appId").getAsString());        GatewayInfo.setSecret(json.get("deviceSecret").getAsString());    }    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, PLATFORM_IP);    LoginConfig.setConfig(LoginConfig.LOGIN_CONFIG_IOCM_PORT, HTTPS_PORT);    LoginConfig.setConfig(LoginConfig.LOGIN_CONFIG_MQTT_ADDR, PLATFORM_IP);    LoginConfig.setConfig(LoginConfig.LOGIN_CONFIG_MQTT_PORT, MQTTS_PORT);}

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