操作场景
在物联网开发平台创建智能灯产品和设备,并连接物联网开发平台,通过腾讯连连小程序绑定设备,进行远程控制灯的亮度、颜色、开关,并实时获取智能灯上报的数据。
前提条件
为了快速理解该业务场景,需要做好以下准备工作:
拥有一台物理或虚拟的 Linux 环境,可以编译、运行 light_demo 程序。
light_demo 在 Linux 环境下测试和验证,主要基于 Ubuntu 16.04 版本,gcc-5.4(建议至少 gcc-4.7+)。
注意:
物联网开发平台从2024年6月20日起,新注册物联网开发平台的用户需购买实例激活码才可使用实例,在此时间之前注册并已开通实例的用户则不受影响,依然享有免费额度。
若您需要使用实例,您可根据您的量产设备数量在 线上购买 对应实例。若用户有商业化的设备接入与量产需求,也可以通过接口的商务联系我们。
操作步骤
步骤1:新建产品
2. 购买完成后,单击控制台内的实例卡片,进入产品页面。
3. 单击新建产品,在新建产品页面,填写产品基本信息。以创建非音视频产品的智能灯为例:
产品类型:选择非音视频产品。
产品名称:输入“智能灯”。
设备类型:选择设备。
通信方式:选择 Wi-Fi。
认证方式:选择密钥认证。
数据协议:选择物模型。

4. 产品信息填写完成后,单击确定即可完成新建产品。
5. 产品新建成功后,您可在产品列表页查看到“智能灯”。
定义产品物模型

创建设备
进入实例的设备页面,单击新建设备。选择所属产品“智能灯”,输入设备名称,然后单击新建。

步骤2:下载 Demo 程序
下载 lightdemo 例程
git clone https://github.com/tencentyun/qcloud-iot-explorer-sdk-embedded-c.git
修改 Demo 程序
上述 git 命令执行成功后,会生成一个 qcloud-iot-sdk-embedded-c 目录。
1. 进入 qcloud-iot-explorer-sdk-embedded-c 目录。
2. 修改该目录下的 789ice_info.json 文件。
> vi device_info.json


3. 将上图红色线框的数据分别替换为控制台产品在设备调试阶段的参数信息。您可进入设备详情页,查看参数并保存。
产品 ID:将控制台的产品 ID,复制到上图 productId。
设备名称:将控制台的设备名称,复制到上图 deviceName。
设备密钥:将控制台的设备密钥,复制到上图 deviceSecret。
编译
1. 上述配置信息修改完成后,即可编译。
2. 在 qcloud-iot-sdk-embedded-c 目录下执行以下命令进行编译。
./cmake_build.sh
3. 编译成功后,会在 output/release/bin 目录下生成 light_data_template_sample 执行文件。
运行 Demo 程序
1. 进入
output/release/bin 目录。2. 输入
./light_data_template_sample。3. 运行成功后,系统输出示例如下:
INF|2019-05-07 21:51:33|device.c|iot_device_info_set(65): SDK_Ver: 3.0.0, Product_ID: FLXBJNIQLK, Device_Name: 789001DBG|2019-05-07 21:51:33|HAL_TLS_mbedtls.c|HAL_TLS_Connect(204): Connecting to /FLXBJNIQLK.iotcloud.tencentdevices.com/8883...DBG|2019-05-07 21:51:33|HAL_TLS_mbedtls.c|HAL_TLS_Connect(209): Setting up the SSL/TLS structure...DBG|2019-05-07 21:51:33|HAL_TLS_mbedtls.c|HAL_TLS_Connect(251): Performing the SSL/TLS handshake...INF|2019-05-07 21:51:33|HAL_TLS_mbedtls.c|HAL_TLS_Connect(269): connected with /FLXBJNIQLK.iotcloud.tencentdevices.com/8883...INF|2019-05-07 21:51:33|mqtt_client.c|IOT_MQTT_Construct(115): mqtt connect with id: ZPEm9 successDBG|2019-05-07 21:51:33|mqtt_client_subscribe.c|qcloud_iot_mqtt_subscribe(129): topicName=$template/operation/result/FLXBJNIQLK/789001|packet_id=35313|pUserdata=(null)DBG|2019-05-07 21:51:33|shadow_client.c|_shadow_event_handler(63): shadow subscribe success, packet-id=35313INF|2019-05-07 21:51:33|light_data_template_sample.c|event_handler(222): subscribe success, packet-id=35313INF|2019-05-07 21:51:33|shadow_client.c|IOT_Shadow_Construct(173): Sync device data successfullyINF|2019-05-07 21:51:33|light_data_template_sample.c|main(496): Cloud Device Construct SuccessDBG|2019-05-07 21:51:33|mqtt_client_subscribe.c|qcloud_iot_mqtt_subscribe(129): topicName=$thing/down/event/FLXBJNIQLK/789001|packet_id=35314|pUserdata=(null)INF|2019-05-07 21:51:33|light_data_template_sample.c|_register_data_template_property(370): data template property=power_switch registered.INF|2019-05-07 21:51:33|light_data_template_sample.c|_register_data_template_property(370): data template property=color registered.INF|2019-05-07 21:51:33|light_data_template_sample.c|_register_data_template_property(370): data template property=brightness registered.INF|2019-05-07 21:51:33|light_data_template_sample.c|_register_data_template_property(370): data template property=name registered.INF|2019-05-07 21:51:33|light_data_template_sample.c|main(517): Register data template propertys SuccessDBG|2019-05-07 21:51:33|shadow_client.c|IOT_Shadow_Get(384): GET Request Document: {"clientToken":"FLXBJNIQLK-0"}DBG|2019-05-07 21:51:33|mqtt_client_publish.c|qcloud_iot_mqtt_publish(337): publish packetID=0|topicName=$template/operation/FLXBJNIQLK/789001|payload={"type":"get", "clientToken":"FLXBJNIQLK-0"}DBG|2019-05-07 21:51:33|shadow_client.c|_shadow_event_handler(63): shadow subscribe success, packet-id=35314INF|2019-05-07 21:51:33|light_data_template_sample.c|event_handler(222): subscribe success, packet-id=35314DBG|2019-05-07 21:51:33|shadow_client.c|_update_ack_cb(114): requestAck=0DBG|2019-05-07 21:51:33|shadow_client.c|_update_ack_cb(117): Received Json Document={"clientToken":"FLXBJNIQLK-0","payload":{"metadata":{"reported":{}},"state":{"reported":{}},"timestamp":1557236942,"version":0},"result":0,"timestamp":1557237093,"type":"get"}DBG|2019-05-07 21:51:34|light_data_template_sample.c|main(602): cycle report:{"version":0, "state":{"reported":{"power_switch":0,"color":0,"brightness":0.000000,"name":"789001"}}, "clientToken":"FLXBJNIQLK-1"}DBG|2019-05-07 21:51:34|shadow_client.c|IOT_Shadow_Update(318): UPDATE Request Document: {"version":0, "state":{"reported":{"power_switch":0,"color":0,"brightness":0.000000,"name":"789001"}}, "clientToken":"FLXBJNIQLK-1"}DBG|2019-05-07 21:51:34|mqtt_client_publish.c|qcloud_iot_mqtt_publish(337): publish packetID=0|topicName=$template/operation/FLXBJNIQLK/789001|payload={"type":"update", "version":0, "state":{"reported":{"power_switch":0,"color":0,"brightness":0.000000,"name":"789001"}}, "clientToken":"FLXBJNIQLK-1"}INF|2019-05-07 21:51:34|light_data_template_sample.c|main(607): shadow update(reported) successINF|2019-05-07 21:51:35|light_data_template_sample.c|OnShadowUpdateCallback(352): recv shadow update response, response ack: 0DBG|2019-05-07 21:51:40|light_data_template_sample.c|main(602): cycle report:{"version":1, "state":{"reported":{"power_switch":0,"color":0,"brightness":0.000000,"name":"789001"}}, "clientToken":"FLXBJNIQLK-2"}DBG|2019-05-07 21:51:40|shadow_client.c|IOT_Shadow_Update(318): UPDATE Request Document: {"version":1, "state":{"reported":{"power_switch":0,"color":0,"brightness":0.000000,"name":"789001"}}, "clientToken":"FLXBJNIQLK-2"}
4. Light Demo 程序定时会上报数据到开发平台,数据格式如下:
{"version":1, "state":{"reported":{"power_switch":0,"color":0,"brightness":0.000000,"name":"789001"}}, "clientToken":"FLXBJNIQLK-2"}
5. 继续保持 Light Demo 程序处于运行状态,然后前往控制台查看该设备的数据。
步骤3:查看设备状态
1. 保持 Light Demo 程序为运行状态。
2. 进入控制台实例的设备列表,可查看到设备 “78901” 的状态为“上线”状态,表示 Demo 程序已成功连接上开发平台。
3. 单击查看,进入设备详情页。然后选择物模型数据 > 属性,可查询设备上报到开发平台的最新数据及历史数据。
当前上报数据的最新值:会显示设备上报的最新数据。
当前上报数据的更新时间:显示数据的更新时间。

4. 单击查看,可查看某个属性的历史上报数据。
步骤4:查看设备通信日志
在设备详情页单击云日志,内容日志内可查询该设备某段时间范围的所有上下行数据。
上行:上行指设备端上报到开发平台的数据。
下行:下行指从开发平台下发到设备的数据。

步骤5:在线调试
1. 当 Light Demo 成功连接到物联网开发平台后,您可在设备详情页的在线调试页面内进行调试。


2. 将亮度设置为68,颜色设置为“Red”,单击发送。
3. 查看 Light Demo 程序,可查看到成功接收到下发的数据。
lighting ]|[color: RED ]|[brightness:|||||||||||||-------]|[789001]
4. 通信日志会显示如下日志,表示成功下发了指令到设备端。
{"method": "control","clientToken": "123","params": {"power_switch": 1,"color": 1,"brightness": 68}}
5. 查看通信日志,即可查看到设备成功接收到下行指令,并上报最新数据到开发平台的详细日志。