设备管理 IoTDM(联通用户专用)-Agent Lite SDK使用指南(Android)(联通用户专用):绑定和登录
绑定和登录
设备或网关第一次接入IoT联接管理平台时需要进行绑定操作,从而将设备或网关与平台进行关联。开发者通过传入设备序列号以及设备信息,将设备或网关绑定到 物联网平台 。
设备或网关绑定成功后或重启后,需要进行登录的流程,在设备或网关成功登录物联网平台后,才可以进行其它服务操作,比如接入其他传感器,数据上报等等。如果设备或网关登录成功,那么设备或网关在平台的状态显示为已在线。
- 修改绑定参数。
绑定时使用的设备固有信息(如设备型号等)是从“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
- 绑定设备。
调用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函数的处理。
- 配置登录参数。
登录前需要通过参数配置接口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");}
- 设备登录。
注册广播接收器对设备登录结果进行相应处理。
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();}