设备管理 IoTDM(联通用户专用)-Agent Lite SDK使用指南(Java)(联通用户专用):绑定和登录
绑定和登录
设备或网关第一次接入物联网平台时需要进行绑定操作,从而将设备或网关与平台进行关联。开发者通过传入设备验证码以及设备信息,将设备或网关绑定到物联网平台。
- 修改绑定参数。
绑定时使用的设备固有信息(如设备型号等)是从“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); ...}
- 绑定设备。
注册观察者对设备绑定结果进行相应处理。
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函数的处理。
- 修改登录参数。
在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";
- 设备登录。
注册观察者对设备登录结果进行相应处理。
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);}