简体中文
简体中文
English
联系我们
注册
登录
语言
简体中文
简体中文
English
联系我们
登录
注册
返回主站
layout空间导航
IoT App SDK行业 App SDK安卓快速入门

行业 App SDK 安卓版快速入门

更新时间:2021-09-03 01:53:12下载pdf

本教程为您介绍涂鸦 行业 App SDK 安卓版。您在本教程中学习的技术是使用此 SDK 构建 IoT 应用程序的基础。在下面的实践方法中,使用 Java 的示例代码来描述该构建过程。

在本教程中,您将学习以下内容

获取免费的开发者帐户 代码 Sample GitHub

注意事项

涂鸦行业 App SDK 安卓版属于 Android 库。因此,使用本教程前,您已经基本了解 Android 开发,包括 Java 和 Kotlin,并且您已熟悉 Android Studio。

此 SDK 使用 Java 编写,但相关概念和 API 适用于 Kotlin。在本教程中,Java 用作编程语言。

什么是行业 App SDK?

涂鸦行业 App SDK 是涂鸦 SaaS 开发框架产品系列的重要组成部分。本教程提供了基于涂鸦 OpenAPI 的多种功能示例,例如,设备配对、用户登录注册、资产管理等。

添加 SDK 至 Android 项目

如需使用此 SDK 和涂鸦 IoT 平台的能力,您必须先将您的应用注册到涂鸦 IoT 平台,然后安装此 SDK。

前提条件

  • 安装以下软件:
    • Android Studio 4.2 或更高版本。
    • Gradle 6.5 或更高版本。
  • 在您的项目中,targetSdkVersion 设置为 30 或更高版本。

注册应用到涂鸦 IoT 平台

创建项目

  1. 登录涂鸦 IoT 平台

  2. 在左侧导航栏中,选择云开发 > 项目管理

  3. 单击立即创建

  4. 创建项目对话框中:

    • 设置项目名称项目描述服务行业可用区域

      涂鸦在全球部署了六大数据中心提供 IoT 云服务,为世界各地客户提供更稳定的服务。您可以在此选择提供服务的区域,支持多选,并且以后您可以修改此配置。

    • 开发方法字段中,从下拉列表中选择自定义开发

      行业 App SDK 安卓版快速入门
  5. 单击创建,继续配置项目。

  6. 配置向导中,选择设备状态通知 API。

    行业 App SDK 安卓版快速入门

    默认选择工业通用相关和授权 API 产品。

  7. 单击开通授权

  8. 填写资产和账户信息,资产自动创建并授权给该账户。

    详情参考管理资产

创建应用程序

  1. 选择云开发 > 项目管理,跳转到我的项目列表页面。

  2. 单击目标项目。

  3. 在该项目的项目管理页面,选择应用 > App 应用,点击添加应用

    行业 App SDK 安卓版快速入门
  4. 在添加应用程序弹框中,选择 Android 应用类型。

导入 SDK

  1. 在您项目的 build.gradle 中,添加 Maven 库。

    maven {
    	url "https://maven-other.tuya.com/repository/maven-releases/"
    }
    
  2. 在您的模块的 build.gradle 中添加涂鸦行业 App SDK。

    dependencies {
    	implementation 'com.tuya.smart:iot-app-sdk:1.0.0'
    }
    

初始化 SDK

在您的应用程序中,添加下列代码:

TuyaIoTSDK.builder().init(getApplicationContext(),
		"$clientID","$clientSecret")
		.hostConfig(RegionHostConst.REGION_HOST_CN)
		.debug(true)
		.build();

代码中的 clientIDclientSecret 可从您创建应用程序时使用的 Authorization Key 字段中获取。

登录用户账户

TYUserManager 类提供了登录用户账户并保持会话的方法。

SDK 目前不支持注册用户。所有注册过程都在平台上完成。您需要手动添加用户到您的项目中才能成功登录账户。

调用 TYUserManager.getUserBusiness().login(String userName, String passWord, ResultListener<T> listener),设置 userNamepassWord,登录用户账户:

TYUserManager.getUserBusiness().login(userName, password,
	new ResultListener<BizResponse>() {
		@Override
		public void onFailure(String s, String s1) {
			//failure
		}

		@Override
		public void onSuccess(BizResponse bizResponse) {
			//success
		}
	});

设备配网

涂鸦行业 App SDK 针对不同条件提供多种配网模式,如热点(AP)模式、有线模式、NB-IoT 模式、二维码模式和子设备模式。

  • AP 模式:也称为热点模式。该模式下,手机连接智能设备的热点,双方建立 Socket 连接,通过协议端口交换数据。

  • Wi-Fi Easy Connect 模式:也称为 EZ 模式。该模式依赖于设备间的通信。现有设备成功配网后,其他同类设备也可以自动完成配网

  • 有线模式:设备通过有线网络连接到路由器。Zigbee 有线网关、有线摄像头均属于此类设备。

  • 子设备模式:蓝牙子设备和 Zigbee 子设备均属于此类设备。这些设备通过网关与 app 和云端进行交互。

  • 二维码方式:摄像头设备通过扫描 app 上的二维码获取配网信息。

AP 模式

  • 流程

    行业 App SDK 安卓版快速入门
  • 获取令牌

    在执行 AP 模式的配网操作之前,SDK 需要从涂鸦 IoT 云端获取配网令牌。此令牌有效期为 10 分钟。配网成功后,此令牌立即失效。如果您需要重新配网,必须重新获取令牌。

    如需获取令牌,调用 TYActivatorManager.getActivator().getRegistrationToken

    TYActivatorManager.getActivator().getRegistrationToken(mAssetId,
    				mUid,
    				Constant.CONFIG_TYPE_AP,
    				IoTCommonUtil.getTimeZoneId(),
    				"",
    				new ResultListener<RegistrationTokenBean>() {
    					@Override
    					public void onFailure(String s, String s1) {
    
    					}
    
    					@Override
    					public void onSuccess(RegistrationTokenBean registrationTokenBean) {
    
    					}
    		);
    

    RegistrationTokenBean 包括下列 3 种属性:

    • region:服务端生成的设备所属地域。
    • token:服务端生成的设备注册令牌。
    • secret:服务端生成的设备注册 Secret。
  • 激活设备

    初始化 ActivatorBuilder.

    activatorBuilder = new ActivatorBuilder(mContext,
    				ssid != null ? ssid : "",
    				password != null ? password : "",
    				region != null ? region : "",
    				token != null ? token : "",
    				secret != null ? secret : "");
    

    使用生成器创建 IAPActivator,然后调用 start()

    activator = TYActivatorManager.newAPActivator(activatorBuilder);
    activator.start();
    

    配网后,无论操作成功或失败,调用 stop()

    activator.stop()
    
  • 获取配网结果

    如需获取配网结果,调用 TYActivatorManager 中的 TYActivatorManager.getActivator().getRegistrationResultToken

    设备配网属于异步过程。设备配网的耗时取决于网络质量。您必须调用 API 来检查设备配网结果。当系统返回配网设备列表或配网任务超时后,轮询任务停止。

    建议轮询任务设置为每隔 1 秒运行一次。配对任务的超时值建议设置为 100 秒。

Wi-Fi EZ 模式

该过程与 AP 模式类似。不同之处在于,Wi-Fi EZ 模式中,您需要用 IEZActivator 替换 IAPActivator

activator = TYActivatorManager.newEZActivator(activatorBuilder);
activator.start();

有线模式

在该模式下,有线设备已连接到网络。配网时,您不需要提供路由器的名称和密码。

下图以Zigbee有线网关为例,描述有线网关组网过程。

行业 App SDK 安卓版快速入门
  • 获取令牌

    该过程与 AP 模式完全一致。

  • 搜索设备

    通过 ActivatorBuilder 来初始化 IWiredActivator,调用 start()

    wiredActivator = TYActivatorManager.newWiredActivator(activatorBuilder);
    wiredActivator.start();
    

    配网后,无论操作成功或失败,调用 stop()

    wiredActivator.stop()
    
  • 获取配网结果

    该过程与 AP 模式完全一致。

子设备模式

行业 App SDK 安卓版快速入门
  • 搜索设备

    如需完成子设备与网关的配网,首先要启用网关来发现子设备。为此,您可以调用 TYActivatorManager 中的 TYActivatorManager.getActivator().discoverSubDevices

    TYActivatorManager.getActivator().discoverSubDevices(mDeviceId, 100, new ResultListener<Boolean>() {
    			@Override
    			public void onFailure(String s, String s1) {
    			}
    
    			@Override
    			public void onSuccess(Boolean result) {
    			}
    		});
    
  • 获取配网结果

    该过程与 AP 模式完全一致。

二维码模式

在该模式下,您可以使用智能摄像头等设备扫描二维码,完成设备配网。生成的二维码图像必须显示在智能手机上。

IQRCodeActivator 为您提供了实现此配网模式的方法。调动 TYActivatorManager.newQRCodeActivator(mBuilder) 初始化设备实例,然后在该实例中调用 generateQRCodeImage()。前者调用可返回生成二维码的数据,此时,您必须自行生成二维码图片。后者可通过 ImageView 的渲染返回 Bitmap,直接获取二维码图片。

设备管理

TYDeviceManager 提供设备管理方法。

如需获取一个或多个设备的详细信息,调用 queryDevicesInfo()

如需控制设备,调用 queryCommandSetFromCategory() 可基于某类别返回设备指令集,调用 queryCommandSetFromDeviceID() 可基于设备 ID 返回设备指令集。 DeviceStandardCommandBean 中的 StandardCommandBean 提供命令相关信息,具体如下:

  • code:用于发送命令。
  • value:表示命令的范围。
  • type:表示命令的值类型。

在发送设备控制命令前,您需要构造 StandardCommandBean,其中包含 code 及其对应的 value。例如,若要控制一个灯泡的开或关,您需要在 DeviceStatusBean 中,将 code 设置为 switch,将 type 设置为 boolean。您必须构造 DeviceStatusBean,类似的构造方式如下:

commend = new DeviceStatusBean(code: "switch", value: true)

然后,调用 sendCommands(command) 发送命令。

如需获取设备的最新状态,可采用 queryDeviceStatus()queryDevicesStatus()

资产管理

TYAssetManager 提供资产交互相关的方法。目前,SDK 无法用于添加、修改或删除资产。您只能在涂鸦 IoT 平台上完成此类操作。详情参考 管理资产

您可以通过调用 queryAssets() 来查询某用户的所有授权资产。您也可以通过调用 queryDevicesByAssetId() 来查询某资产的绑定设备。

本教程包含了以下文档,帮助您快速了解相关概念和流程: