1. 设备配网

1.1. 功能概述

设备配网 SDK 提供了把智能设备配置上路由器的能力,具体包括:

  • 快连(EZ)模式
  • 热点(AP)模式
  • 摄像头二维码配网
  • 有线设备配网
  • 子设备配网
  • 蓝牙设备配网
名词 解释
Wi-Fi 设备 采用 WiFi 模块连接路由器,和 APP 以及云端进行数据交互的智能设备。
EZ 模式 又称快连模式,APP 把配网数据包打包到802.11数据包的指定区域中,
发送到周围环境;智能设备的 WiFi 模块处于混杂模式下,
监听捕获网络中的所有报文,按照约定的协议数据格式解析出 APP 发出配网信息包。
AP 模式 又称热点模式,手机作为 STA 连接智能设备的热点,双方建立一个 Socket 连接通过约定端口交互数据。
摄像头扫码配网 摄像头设备通过扫描APP上的二维码获取配网数据信息
有线设备 通过有线网络连接路由器的设备,例如 ZigBee 有线网关、有线摄像头等
子设备 通过网关来跟 APP 以及云端数据交互的设备,例如 ZigBee 子设备
ZigBee ZigBee 技术是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通讯技术。
主要用于距离短、功耗低且传输速率不高的各种电子设备之间进行数据传输以及典型的有周期性数据、间歇性数据和低反应时间数据传输的应用。
ZigBee 网关 融合 ZigBee 网络中协调器和 WiFi 功能的设备,负责 ZigBee 网络的组建及数据信息存储。
ZigBee 子设备 ZigBee 网络中的路由或者终端设备,负责数据转发或者终端控制响应。

1.2. 使用须知

开发设备配网之前 需要先了解 TuyaHomeSDK 基本逻辑,并已经使用 TuyaHomeSdk 完成登录创建家庭等基本操作。

1.3. 配网实现

1.3.1. 快连模式

Title: EZ 配网

participant APP
participant Device
participant Server

Note over APP: 连上路由器
Note over Device: Wi-Fi 灯快闪

APP-->Server: 获取 token
Server-->APP: 返回 token

Note over APP: 开始配网,通过广播、组播循环发 ssid/pwd/token
Device->Device: 捕捉到 ssid/password/token

APP-->Server: 根据 token 2 秒钟轮询一次入网激活设备列表(总时长默认 100s)

Device-->Server: 去激活设备
Server-->Device: 激活成功

Server-->APP: 激活成功,返回成功设备列表

初始化配网参数

ActivatorBuilder builder = new ActivatorBuilder()
        .setSsid(ssid)
        .setContext(context)
        .setPassword(password)
        .setActivatorModel(ActivatorModelEnum.TY_EZ)
        .setTimeOut(timeout)
        .setToken(token)
        .setListener(new ITuyaSmartActivatorListener() {

                @Override
                public void onError(String errorCode, String errorMsg) {

                }

                @Override
                public void onActiveSuccess(DeviceBean devResp) {

                }

                @Override
                public void onStep(String step, Object data) {

                }
            }
        ));

参数说明

参数 说明
token 配网所需要的激活 key
context 需要传入 activity 的 context
ssid 配网之后,设备工作WiFi的名称(家庭网络)
password 配网之后,设备工作WiFi的密码(家庭网络)
activatorModel 配网模式,EZ 模式请传入:ActivatorModelEnum.TY_EZ
timeout 配网的超时时间设置,默认是 100s,单位是秒

获取配网 token

开始配网之前,SDK 需要在联网状态下从涂鸦云获取配网 Token,Token 的有效期为10分钟,且配置成功后就会失效(再次配网需要重新获取)。

TuyaHomeSdk.getActivatorInstance().getActivatorToken(homeId, 
        new ITuyaActivatorGetToken() {

            @Override
            public void onSuccess(String token) {

            }

            @Override
            public void onFailure(String s, String s1) {

            }
        });

参数说明

参数 说明
homeId 家庭 id,详情参考家庭管理章节

配网方法调用

ITuyaActivator mTuyaActivator = TuyaHomeSdk.getActivatorInstance().newMultiActivator(builder);
//开始配网
mTuyaActivator.start();
//停止配网
mTuyaActivator.stop(); 
//退出页面销毁一些缓存和监听
mTuyaActivator.onDestroy();

1.3.2. 热点模式

Title: AP 配网

participant APP
participant Device
participant Server

Note over APP: 连上路由器
Note over Device: Wi-Fi 灯慢闪
APP-->Server: 获取 token
Server-->APP: 返回 token

Note over APP: 连上设备的热点
APP-->Device: 开始配网,发送配置信息 ssid/pwd/token

Note over Device: 自动关闭热点
Note over Device: 连上路由器 Wi-Fi

Note over APP: 自动重新连上路由器
APP-->Server: 根据 token 2 秒钟轮询一次入网激活设备列表(总时长默认 100s)

Device-->Server: 去激活设备
Server-->Device: 激活成功

Server-->APP: 激活成功,返回成功设备列表

初始化配网参数

ActivatorBuilder builder = new ActivatorBuilder()
        .setContext(context)
        .setSsid(ssid)
        .setPassword(password)
        .setActivatorModel(ActivatorModelEnum.TY_AP)
        .setTimeOut(timeout)
        .setToken(token)
        .setListener(new ITuyaSmartActivatorListener() {

                @Override
                public void onError(String errorCode, String errorMsg) {

                }

                @Override
                public void onActiveSuccess(DeviceBean devResp) {

                }

                @Override
                public void onStep(String step, Object data) {

                }
            }
        ));

参数说明

参数 说明
token 配网所需要的激活 key
context 需要传入 activity 的 context
ssid 配网之后,设备工作 Wi-Fi 的名称(家庭网络)
password 配网之后,设备工作 Wi-Fi 的密码(家庭网络)
activatorModel 配网模式,AP 模式请传入:ActivatorModelEnum.TY_AP
timeout 配网的超时时间设置,默认是 100s ,单位是秒

获取配网 token

开始配网之前,SDK 需要在联网状态下从涂鸦云获取配网 Token,Token 的有效期为10分钟,且配置成功后就会失效(再次配网需要重新获取)。

TuyaHomeSdk.getActivatorInstance().getActivatorToken(homeId, 
        new ITuyaActivatorGetToken() {

            @Override
            public void onSuccess(String token) {

            }

            @Override
            public void onFailure(String s, String s1) {

            }
        });

参数说明

参数 说明
homeId 家庭 id,详情参考家庭管理章节

配网方法调用

ITuyaActivator mTuyaActivator = TuyaHomeSdk.getActivatorInstance().newActivator(builder);
//开始配网
mTuyaActivator.start(); 
//停止配网
mTuyaActivator.stop(); 
//退出页面销毁一些缓存和监听
mTuyaActivator.onDestroy();

1.3.3. 摄像头二维码配网

描述

通过摄像头设备扫描 APP 二维码来传递配网信息的方式来实现配网设备


Title: 摄像头二维码配网

participant APP
participant Camera
participant Server

Note over APP: 连上路由器
Note over Camera: 置于待配网状态
APP-->Server: 获取 token
Server-->APP: 返回 token

Note over APP: 根据 ssid/password/token 生成二维码

Camera-->APP: 通过扫描 APP 上的二维码获取 ssid/password/token
APP-->Server: 根据 token 2秒钟轮询一次入网激活设备列表(总时长默认120s)
Camera-->Server: 去激活设备
Server-->Camera: 激活成功

Server-->APP: 激活成功,返回成功设备列表

初始化配网参数

TuyaCameraActivatorBuilder builder = new TuyaCameraActivatorBuilder()
         .setContext(context)
         .setSsid(ssid)
         .setPassword(password)
         .setToken(token)
         .setTimeOut(timeout)
         .setListener(new ITuyaSmartCameraActivatorListener() {
             @Override
             public void onQRCodeSuccess(String qrcodeUrl) {
                 //返回生成二维码的 url 链接
             }

             @Override
             public void onError(String errorCode, String errorMsg) {
                 //配网失败
             }

             @Override
             public void onActiveSuccess(DeviceBean devResp) {
                //配网成功      
             }
         }));

参数说明

参数 说明
token 配网所需要的激活 key
context 需要传入 activity 的 context
ssid 配网之后,设备工作 Wi-Fi 的名称(家庭网络)
password 配网之后,设备工作 Wi-Fi 的密码(家庭网络)
timeout 配网的超时时间设置,默认是 100s ,单位是秒

获取配网 token

开始配网之前,SDK 需要在联网状态下从涂鸦云获取配网 Token,Token 的有效期为10分钟,且配置成功后就会失效(再次配网需要重新获取)。

TuyaHomeSdk.getActivatorInstance().getActivatorToken(homeId, 
        new ITuyaActivatorGetToken() {

            @Override
            public void onSuccess(String token) {

            }

            @Override
            public void onFailure(String s, String s1) {

            }
        });

参数说明

参数 说明
homeId 家庭 id,详情参考家庭管理章节

配网方法调用

  • 配网实现类
ITuyaCameraDevActivator mTuyaActivator = TuyaHomeSdk.getActivatorInstance().newCameraDevActivator(builder);
  • 获取二维码url链接
mTuyaActivator.createQRCode(); //通过 onQRCodeSuccess 回调返回
  • 根据url生成二维码

示例:需要依赖 zxing( implementation 'com.google.zxing:core:3.2.1' )

public static Bitmap createQRCode(String url, int widthAndHeight)
            throws WriterException {
        Hashtable hints = new Hashtable();
        hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
        hints.put(EncodeHintType.MARGIN,0);
        BitMatrix matrix = new MultiFormatWriter().encode(url,
                BarcodeFormat.QR_CODE, widthAndHeight, widthAndHeight, hints);

        int width = matrix.getWidth();
        int height = matrix.getHeight();
        int[] pixels = new int[width * height];

        for (int y = 0; y < height; y++) {
            for (int x = 0; x < width; x++) {
                if (matrix.get(x, y)) {
                    pixels[y * width + x] = BLACK;
                }
            }
        }
        Bitmap bitmap = Bitmap.createBitmap(width, height,
                Bitmap.Config.ARGB_8888);
        bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
        return bitmap;
    }
  • 开始配网
mTuyaActivator.start();
  • 停止配网
mTuyaActivator.stop();
  • 销毁数据
mTuyaActivator.onDestory();

1.3.4. 有线设备配网

描述

有线设备是指通过有线网络连接路由器,配网过程不用输入路由器的热点名称和密码。下面以 ZigBee 有线网关介绍有线配网业务流程。

Title: Zigbee 网关配网

participant APP
participant Device
participant Server

Note over Device: 将 Zigbee 网关连上路由器,并置于配网状态
APP --> APP: APP 连上和网关相同的路由器热点
Device-->APP: 发送广播包,待配网设备
APP-->APP: 收到设备信息及 active 状态

APP-->Server: 获取 token
Server-->APP: 返回 token

APP-->Device: 发送激活命令给网关设备
APP-->Server: 根据 token 2秒钟轮询一次入网激活设备列表(总时长默认100s)

Note over Device: 设备收到 APP 激活广播信息

Device->Server: 去云端进行激活
Server-->Device: 激活成功

Server-->APP: 激活成功,返回成功设备列表

发现设备

SDK 提供发现待配网有线设备的功能,获取设备前手机需与设备接入同一网络,然后注册获取有线设备的通知,待 SDK 收到有线设备的广播即会通过通知转发设备信息。

ITuyaGwSearcher mTuyaGwSearcher = TuyaHomeSdk.getActivatorInstance().newTuyaGwActivator().newSearcher();
        mTuyaGwSearcher.registerGwSearchListener(new IGwSearchListener() {
            @Override
            public void onDevFind(HgwBean hgwBean) {

            }
        });

参数说明

参数 说明
hgwBean 发现的网关数据实体

初始化配网参数

  • 使用 SDK 的发现设备功能
ITuyaActivator mITuyaActivator = TuyaHomeSdk.getActivatorInstance().newGwActivator(
        new TuyaGwActivatorBuilder()
            .setToken(token)
            .setTimeOut(timeout)
            .setContext(context)
            .setHgwBean(hgwBean)
            .setListener(new ITuyaSmartActivatorListener() {

                    @Override
                    public void onError(String errorCode, String errorMsg) {

                    }

                    @Override
                    public void onActiveSuccess(DeviceBean devResp) {

                    }

                    @Override
                    public void onStep(String step, Object data) {

                    }
            }
        ));

参数说明

参数 说明
token 配网所需要的激活 key
timeout 配网的超时时间设置,默认是100s ,单位是秒
context 需要传入 activity 的 context
hgwBean 监听发现的网关数据实体
  • 不使用 SDK 的发现设备功能
ITuyaActivator mITuyaActivator = TuyaHomeSdk.getActivatorInstance().newGwActivator(
        new TuyaGwActivatorBuilder()
            .setToken(token)
            .setTimeOut(timeout)
            .setContext(context)
            .setListener(new ITuyaSmartActivatorListener() {

                    @Override
                    public void onError(String errorCode, String errorMsg) {

                    }

                    @Override
                    public void onActiveSuccess(DeviceBean devResp) {

                    }

                    @Override
                    public void onStep(String step, Object data) {

                    }
            }
        ));

参数说明

参数 说明
token 配网所需要的激活 key
timeout 配网的超时时间设置,默认是100s ,单位是秒
context 需要传入 activity 的 context

获取配网 token

开始配网之前,SDK 需要在联网状态下从涂鸦云获取配网 Token,Token 的有效期为10分钟,且配置成功后就会失效(再次配网需要重新获取)。

TuyaHomeSdk.getActivatorInstance().getActivatorToken(homeId, 
        new ITuyaActivatorGetToken() {

            @Override
            public void onSuccess(String token) {

            }

            @Override
            public void onFailure(String s, String s1) {

            }
        });

参数说明

参数 说明
homeId 家庭 id,详情参考家庭管理章节

配网方法调用

ITuyaActivator mITuyaActivator = TuyaHomeSdk.getActivatorInstance().newGwActivator(builder);
//开始配网
mITuyaActivator.start()
//停止配网
mITuyaActivator.stop()
//退出页面清理
mITuyaActivator.onDestroy()

1.3.5. 子设备配网

描述

子设备配网需要网关设备云在线的情况下才能发起,且子设备处于配网状态。下面以 ZigBee 网关子设备为例介绍配网业务流程。

Title: ZigBee 子设备激活

participant APP
participant SDK
participant Zigbee 网关
participant Service

Note over Zigbee 网关: 将 ZigBee 子设备重置
APP->SDK: 发送子设备激活指令
SDK->Zigbee 网关: 发送子设备激活指令

Note over Zigbee 网关: 收到子设备激活信息

Zigbee 网关->Service: 通知云端子设备激活
Service-->Zigbee 网关: 子设备激活成功

Zigbee 网关-->SDK: 子设备激活成功
SDK-->APP: 子设备激活成功

初始化配网参数

TuyaGwSubDevActivatorBuilder builder = new TuyaGwSubDevActivatorBuilder()
        .setDevId(mDevId)
        .setTimeOut(timeout)
        .setListener(new ITuyaSmartActivatorListener() {

                @Override
                public void onError(String errorCode, String errorMsg) {

                }

                @Override
                public void onActiveSuccess(DeviceBean devResp) {

                }

                @Override
                public void onStep(String step, Object data) {

                }
            }
        ));

参数说明

参数 说明
mDevId 设置网关 ID
timeout 配网的超时时间设置,默认是 100s ,单位是秒

配网方法调用

ITuyaActivator mTuyaGWSubActivator = TuyaHomeSdk.getActivatorInstance().newGwSubDevActivator(builder);
//开始配网
mTuyaGWSubActivator.start();
//停止配网
mTuyaGWSubActivator.stop();
//销毁
mTuyaGWSubActivator.onDestory();

1.3.6. 蓝牙设备配网

蓝牙设备配网详细参考涂鸦蓝牙体系

results matching ""

    No results matching ""