通过本入门教程,大家能了解到如何在涂鸦 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 topicString topic = "tylink/" + deviceId + "/thing/property/report";// Current timestamplong timestamp = System.currentTimeMillis();// Property report contentString 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 程序,可以快速验证您项目所需的业务场景。
接下来,可根据设备分类继续 创建产品。