更新时间:2022-11-28 02:33:56下载pdf
本教程为您介绍涂鸦 行业 App SDK 安卓版。您在本教程中学习的技术是使用此 SDK 构建 IoT 应用程序的基础。在下面的实践方法中,使用 Java 的示例代码来描述该构建过程。
在本教程中,您将学习以下内容:
涂鸦行业 App SDK 安卓版属于 Android 库。因此,使用本教程前,您已经基本了解 Android 开发,包括 Java 和 Kotlin,并且您已熟悉 Android Studio。
此 SDK 使用 Java 编写,但相关概念和 API 适用于 Kotlin。在本教程中,Java 用作编程语言。
涂鸦行业 App SDK 是涂鸦 SaaS 开发框架产品系列的重要组成部分。本教程提供了基于涂鸦 OpenAPI 的多种功能示例,例如,设备配对、用户登录注册、资产管理等。
如需使用此 SDK 和涂鸦 IoT 平台的能力,您必须先将您的应用注册到涂鸦 IoT 平台,然后安装此 SDK。
targetSdkVersion
设置为 30
或更高版本。在您项目的 build.gradle
中,添加 Maven 库。
maven {
url "https://maven-other.tuya.com/repository/maven-releases/"
}
在您的模块的 build.gradle
中添加涂鸦行业 App SDK。
dependencies {
implementation 'com.tuya.smart:iot-app-sdk:1.0.0'
}
在您的应用程序中,添加下列代码:
TuyaIoTSDK.builder().init(getApplicationContext(),
"$clientID","$clientSecret")
.hostConfig(RegionHostConst.REGION_HOST_CN)
.debug(true)
.build();
代码中的 clientID
和 clientSecret
可从您创建应用程序时使用的 Authorization Key 字段中获取。
TYUserManager 类提供了登录用户账户并保持会话的方法。
SDK 目前不支持注册用户。所有注册过程都在平台上完成。您需要手动添加用户到您的项目中才能成功登录账户。
调用 TYUserManager.getUserBusiness().login(String userName, String passWord, ResultListener<T> listener)
,设置 userName
和 passWord
,登录用户账户:
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 模式的配网操作之前,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
秒。
该过程与 AP 模式类似。不同之处在于,Wi-Fi EZ 模式中,您需要用 IEZActivator 替换 IAPActivator
。
activator = TYActivatorManager.newEZActivator(activatorBuilder);
activator.start();
在该模式下,有线设备已连接到网络。配网时,您不需要提供路由器的名称和密码。
下图以Zigbee有线网关为例,描述有线网关组网过程。
获取令牌:
该过程与 AP 模式完全一致。
搜索设备:
通过 ActivatorBuilder 来初始化 IWiredActivator,调用 start()
。
wiredActivator = TYActivatorManager.newWiredActivator(activatorBuilder);
wiredActivator.start();
配网后,无论操作成功或失败,调用 stop()
。
wiredActivator.stop()
获取配网结果:
该过程与 AP 模式完全一致。
搜索设备:
如需完成子设备与网关的配网,首先要启用网关来发现子设备。为此,您可以调用 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()
来查询某资产的绑定设备。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈