通过本入门教程,大家能了解到如何在涂鸦 IoT 开发平台上使用 TuyaLink 完成智能设备接入。并通过 Java 程序,在 IntelliJ IDEA 中使用 TuyaLink 的 GitHub Demo 工程,对一个电工开关设备,实现基本的数据上报下发功能。
准备工作
注册一个涂鸦开发者账号,用来创建和管理您的云端设备。
第一步:生态设备接入
步骤一:创建产品
产品是涂鸦定义一类设备的抽象描述,用于对同类设备进行管理。例如,如果您有一台具备蓝牙控制能力的跑步机,需要接入涂鸦 IoT 开发平台完成设备监控,则您可以定义它为一个 智能跑步机 产品。本步骤介绍如何创建一个智能化方式为 生态设备接入 的产品:
-
登录 涂鸦 IoT 开发平台。
-
单击 创建产品。
-
根据您已有的智能设备分类选择产品类目,确定具体产品。例如 电工 > 开关。
-
在 选择智能化方式 处,选择 生态设备接入。
-
默认选择 TuyaLink 自定义方案。
-
根据页面提示,完善产品基本信息。
步骤二:功能定义
创建产品后,您会进入 功能定义 菜单,您可以根据设备的已有功能进行添加。
-
单击 添加功能 按钮,定义一个最基本的功能,如调光开关 1。
-
单击 确定,添加完成。
步骤三:设备开发和激活验证
-
切换至 设备开发 菜单,选择 开放协议接入,单击 下一步。
-
根据接入指南的内容说明,您可以选择 Tuya MQTT 标准协议 或 Tuya IoT Core SDK。本文介绍 Tuya MQTT 标准协议 接入方式。
-
进入激活验证流程,您可以选择免费领取授权码或购买授权码,来激活您的设备。本步骤选择 免费领取授权码。
-
等待 1 分钟左右,获取到免费的授权码后,您可以单击 注册设备 来生成一个可用于测试验证的设备。
-
在 注册设备 页面,选择注册方式,并分配注册 ID。
-
设备注册成功后,您可以在激活验证页面获取设备的标识信息。
标识 示例 注册 ID nFUDM2LnPFuL5jTrW*** ProductID gmabzdwevsvlt*** DeviceID 6cc87b39369b6fb754i*** DeviceSecret *****************
对于一般的物联网场景,获取到设备的 ProductID
、DeviceID
和 DeviceSecret
便可以满足设备上报数据到云端的需求,也就是通常意义的设备数据采集。TuyaLink 通过 MQTT 上报设备数据。
第二步:下载和适配 Demo
接下来,您将通过 Java 代码的方式,接入涂鸦 IoT 开发平台,实现设备的数据上报功能。Java 代码运行在相应实体主机上,即可代表真实设备。
-
前往 GitHub 下载 Tuyalink Demo。
-
将下载的示例代码,解压导入到 IntelliJ IDEA。
-
进入核心示例代码
TuyaMQTT3ClientDemo
。 -
将在上文获取的
ProductID
、DeviceID
和DeviceSecret
信息,替换到TuyaMQTT3ClientDemo
如下位置:// TuyaLink device configuration is as follows, you must change it String productId = "dsadus***"; String deviceId = "6cc87b393436fb754i***"; String deviceSecret = "ffad8e******8c717";
第三步:设备上报数据
设备属性上报
topic
:tylink/${deviceId}/thing/property/report
{
"msgId":"45lkj3551234***",
"time":1626197189638,
"data":{
"switch_led_1":{
"value":true,
"time": 1626197189638
}
}
}
参数说明
参数 | 类型 | 说明 | 必选 | 备注 |
---|---|---|---|---|
${deviceId} | string | 设备 ID | 是 | 要查询设备模型的具体设备。 |
version | string | 协议版本 | 否 | 默认值为 1.0,且仅有 1.0。 |
msgId | string | 消息 ID | 是 | 总长度不超过 32 位的字符,请求和响应消息通过该值建立应答关系。 |
time | number | 消息时间戳 | 是 | 消息发送时的 Unix 时间戳,10 位秒级或 13 位毫秒级。 |
data | object | 上报的属性值集合 | 是 | key 为属性 code,value 为属性值和属性变更时间戳。 |
data.${key} | object | 属性上报对象 | 是 | key 为属性 code。 |
data.${key}.time | number | 属性变更时间戳 | 是 | Unix 时间戳,10 位秒级或 13 位毫秒级。 |
data.${key}.value | object | 属性上报值 | 是 | 具体的属性值。 |
代码示例如下:
//****************************************device property report********************************************
// Property report topic
String topic = "tylink/" + deviceId + "/thing/property/report";
// Current timestamp
long timestamp = System.currentTimeMillis();
// Property report content
String content = "{\n" +
"\t\"msgId\":\"45lkj3551234002\",\n" +
" \t\"time\":" + timestamp + ",\n" +
"\t\"data\":{\n" +
" \t\"switch_led_1\":{\n" +
" \t\"value\":true,\n" +
" \t\"time\": " + timestamp + " \n" +
" }\n" +
"\t}\n" +
"}";
MqttMessage message = new MqttMessage(content.getBytes());
message.setQos(1);
sampleClient.publish(topic, message);
System.out.println("publish topic: " + topic);
System.out.println("publish content: " + content);
此处的设备属性字段需要跟涂鸦 IoT 开发平台功能定义对应的标识符一致。
在线调试
-
代码调整好后,打开涂鸦 IoT 开发平台,在接入使用流程中选择 在线调试。
(可选)或者在产品开发页面,直接跳转到 在线调试 页面,然后单击 前往设备调试。
-
选择需要调试的设备,可以选择跟上述代码配置中一致的设备 ID。
-
选择设备后,可以实时看到设备的在线状态,也可单击 手动刷新 获取最新的状态。
-
至此,准备工作完毕,右键
TuyaMQTT3ClientDemo
文件,单击 Run 运行代码。 -
可以看到控制台属性已上报成功。
-
此时,切换到涂鸦 IoT 开发平台的 设备调试 页面,可以看到设备上报的数据日志。
第四步:向设备下发消息
上一步您已经体验了设备上报数据到云端,本小节将演示如何向设备下发消息。
- 返回 涂鸦 IoT 开发平台。
- 前往设备调试页面。
- 调整为您分配了授权码的设备。
- 在属性调试对应参数中,填入参数值,单击 设置。此时云端的指令会下发到设备,您可以看到日志区域已经显示下发给到设备的内容。
- 返回还在运行中的 Java 代码中,IDEA 的控制台输出如下内容。
下一步
已经通过 Java 代码运行的程序,模拟了真实设备和云平台之间设备上报下发的全流程。基于下载的 Demo 程序,可以快速验证您项目所需的业务场景。
接下来,可根据设备分类继续 创建产品。