【Android&iOS】有线设备配网一次实战记录

App开发相关产品技术讨论,包括OEM App、App SDK等话题


Post Reply
User avatar
hackill
Posts: 12

什么是有线设备

有线设备是指设备插着网线连接路由器,这类设备统称为有线设备,他们的配网称为有线设备配网

设备配网的前提

  • 有线设备重置后,会向所连接的网络中发送广播数据包
  • sdk 在进行有线设备配网相关任务时,会向当前手机连接的Wi-FI网络中的局域网进行监听检索广播数据包,若检索到有待配网的广播包,则认为有效的 待配网设备,从而进行下一步动作。
  • 结合前两条,app的交互上 需要引导用户手机连接的Wi-FI与有线设备的连接的路由器是同一个网络,否则无法交换信息

交互建议

由于有线配网可以在配网前先通过局域网发现设备,所以通常可以设计成两种交互。
① 可以设计成 先扫描到设备,由用户点击 在进行有线设备配网。 ② 不需要扫描直接扫码 或者其他的方式进入配网,配网中扫到哪个设备 就进行直接配网。

无需先扫描设备的设计:

1、扫码设备

Code: Select all

IThingGwSearcher mThingGwSearcher = ThingHomeSdk.getActivatorInstance().newThingGwActivator().newSearcher();
		mThingGwSearcher.registerGwSearchListener(new IGwSearchListener() {
			@Override
			public void onDevFind(HgwBean hgwBean) {

		}
	});

扫描的对象 HgwBean中会包含productkey\uuid等信息 可以用于展示设备

2、进行配网
参数介绍:

  • token为配网所需要请求的token,所有的配网都是一样的创建方式,这里不重复说明。
  • timeout表示超时时间 单位为秒
  • hgwBean 为上一步扫描到的对象

    Code: Select all

    IThingActivator mIThingActivator = ThingHomeSdk.getActivatorInstance().newGwActivator(
    		new ThingGwActivatorBuilder()
    			.setToken(token)
    			.setTimeOut(timeout)
    			.setContext(context)
    			.setHgwBean(hgwBean)
    			.setListener(new IThingSmartActivatorListener() {
    
    			@Override
    			public void onError(String errorCode, String errorMsg) {
    
    			}
    
    			@Override
    			public void onActiveSuccess(DeviceBean devResp) {
    
    			}
    
    			@Override
    			public void onStep(String step, Object data) {
    
    			}
    	}
    	
    ));
    
    3、若不需要扫描直接配网 可以用一下方式

    参数介绍:
    • token为配网所需要请求的token,所有的配网都是一样的创建方式,这里不重复说明。
    • timeout表示超时时间 单位为秒
    • hgwBean 不填,内部会自动扫描,并配第一个扫描的设备。

      Code: Select all

      IThingActivator mIThingActivator = ThingHomeSdk.getActivatorInstance().newGwActivator(
      		new ThingGwActivatorBuilder()
      			.setToken(token)
      			.setTimeOut(timeout)
      			.setContext(context)
      			.setListener(new IThingSmartActivatorListener() {
      
      			@Override
      			public void onError(String errorCode, String errorMsg) {
      
      			}
      
      			@Override
      			public void onActiveSuccess(DeviceBean devResp) {
      
      			}
      
      			@Override
      			public void onStep(String step, Object data) {
      
      			}
      	}
      	
      ));
      

      开发文档可参考
      https://developer.tuya.com/cn/docs/app- ... xklb5bxmps


      有问题可以反馈

Tuya App SDK Developer


Tags:
Post Reply