有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

操作场景

物联网开发平台提供了基于MQTT协议的物模型接入方式,假设一款智能灯接入到物联网开发平台,通过物联网开发平台可以远程控制灯的亮度、颜色、开关,并实时获取智能灯上报到开发平台的数据。本文档主要指导您如何在物联网开发平台控制台接入智能灯。

前提条件

为了通过下面的步骤快速理解该业务场景,需要做好以下准备工作:
申请物联网开发平台服务。
拥有一台物理或虚拟的 Linux 环境,可以编译、运行 light_demo 程序。
light_demo 在 Linux 环境下测试和验证,主要基于 Ubuntu 16.04 版本,gcc-5.4(建议至少 gcc-4.7+)。

操作步骤

控制台操作

创建项目

1. 登录 物联网开发平台控制台,选择平台默认开通的公共实例或用户购买的企业实例
2. 进入项目列表页面,单击新建项目
项目名称:输入“智能灯演示”或其他名称。
项目描述:按照实际需求填写项目描述。
?
?
?
3. 项目基本信息填写完成后,单击保存,即可完成新建项目。
4. 项目新建成功后,即可新建产品。

新建产品

1. 进入该项目的产品列表页面,单击新建产品
2. 在新建产品页面,填写产品基本信息。
产品名称:输入“智能灯”或其他产品名称。
产品品类:选择“智慧城市” > “公共事业” > “路灯照明”。
设备类型:选择“设备”。
认证方式:选择“密钥认证”。
通信方式:按需选择。
其他都为默认选项。
?
?
?
3. 产品信息填写完成后,单击保存,即可完成新建产品。
4. 产品新建成功后,您可在产品列表页查看到“智能灯”。

定义产品物模型

选择“智能灯”类型后,系统会自动生成标准功能。
?
?

创建设备

在设备调试页面中,单击新建设备,设备名为 dev001。
?
?

下载 Demo 程序

下载 lightdemo 例程

首先从 GitHub 下载,或执行下面的 git 命令。
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. 修改该目录下的 device_info.json 文件。
> vi device_info.json
?
enter image description here
?
?
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: BKDDAHRGRX, Device_Name: dev001
DBG|2019-05-07 21:51:33|HAL_TLS_mbedtls.c|HAL_TLS_Connect(204): Connecting to /BKDDAHRGRX.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 /BKDDAHRGRX.iotcloud.tencentdevices.com/8883...
INF|2019-05-07 21:51:33|mqtt_client.c|IOT_MQTT_Construct(115): mqtt connect with id: ZPEm9 success
DBG|2019-05-07 21:51:33|mqtt_client_subscribe.c|qcloud_iot_mqtt_subscribe(129): topicName=$template/operation/result/BKDDAHRGRX/dev001|packet_id=35313|pUserdata=(null)
DBG|2019-05-07 21:51:33|shadow_client.c|_shadow_event_handler(63): shadow subscribe success, packet-id=35313
INF|2019-05-07 21:51:33|light_data_template_sample.c|event_handler(222): subscribe success, packet-id=35313
INF|2019-05-07 21:51:33|shadow_client.c|IOT_Shadow_Construct(173): Sync device data successfully
INF|2019-05-07 21:51:33|light_data_template_sample.c|main(496): Cloud Device Construct Success
DBG|2019-05-07 21:51:33|mqtt_client_subscribe.c|qcloud_iot_mqtt_subscribe(129): topicName=$thing/down/event/BKDDAHRGRX/dev001|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 Success
DBG|2019-05-07 21:51:33|shadow_client.c|IOT_Shadow_Get(384): GET Request Document: {"clientToken":"BKDDAHRGRX-0"}
DBG|2019-05-07 21:51:33|mqtt_client_publish.c|qcloud_iot_mqtt_publish(337): publish packetID=0|topicName=$template/operation/BKDDAHRGRX/dev001|payload={"type":"get", "clientToken":"BKDDAHRGRX-0"}
DBG|2019-05-07 21:51:33|shadow_client.c|_shadow_event_handler(63): shadow subscribe success, packet-id=35314
INF|2019-05-07 21:51:33|light_data_template_sample.c|event_handler(222): subscribe success, packet-id=35314
DBG|2019-05-07 21:51:33|shadow_client.c|_update_ack_cb(114): requestAck=0
DBG|2019-05-07 21:51:33|shadow_client.c|_update_ack_cb(117): Received Json Document={"clientToken":"BKDDAHRGRX-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":"dev001"}}, "clientToken":"BKDDAHRGRX-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":"dev001"}}, "clientToken":"BKDDAHRGRX-1"}
DBG|2019-05-07 21:51:34|mqtt_client_publish.c|qcloud_iot_mqtt_publish(337): publish packetID=0|topicName=$template/operation/BKDDAHRGRX/dev001|payload={"type":"update", "version":0, "state":{"reported":{"power_switch":0,"color":0,"brightness":0.000000,"name":"dev001"}}, "clientToken":"BKDDAHRGRX-1"}
INF|2019-05-07 21:51:34|light_data_template_sample.c|main(607): shadow update(reported) success
INF|2019-05-07 21:51:35|light_data_template_sample.c|OnShadowUpdateCallback(352): recv shadow update response, response ack: 0
DBG|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":"dev001"}}, "clientToken":"BKDDAHRGRX-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":"dev001"}}, "clientToken":"BKDDAHRGRX-2"}
4. Light Demo 程序定时会上报数据到开发平台,数据格式如下:
{"version":1, "state":{"reported":{"power_switch":0,"color":0,"brightness":0.000000,"name":"dev001"}}, "clientToken":"BKDDAHRGRX-2"}
5. 继续保持 Light Demo 程序处于运行状态,然后前往控制台查看该设备的数据。

查看设备状态

1. 保持 light Demo 程序为运行状态。
2. 进入控制台 > 产品开发 > 设备调试,可查看到设备 “dev001” 的状态为“上线”状态,表示 Demo 程序已成功连接上开发平台。
3. 单击查看,可进入设备详情页。
4. 单击设备属性,可查询设备上报到开发平台的最新数据及历史数据。
当前上报数据的最新值:会显示设备上报的最新数据。
当前上报数据的更新时间:显示数据的更新时间。
?
?
?
5. 单击查看,可查看某个属性的历史上报数据。

查看设备通信日志

1. 单击设备日志,可查询该设备某段时间范围的所有上下行数据。
上行:上行指设备端上报到开发平台的数据。
下行:下行指从开发平台下发到设备的数据。
?
?

在线调试

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


http://www.vxiaotou.com