智能灯接入指引

最近更新时间:2019-11-21 15:39:31

操作场景

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

前提条件

为了通过下面的步骤快速理解该业务场景,需要做好以下准备工作:

  • 申请物联网开发平台服务。
  • 拥有一台物理或虚拟的 Linux 环境,可以编译、运行 light_demo 程序。
  • light_demo 在 Linux 环境下测试和验证,主要基于 Ubuntu 16.04 版本,gcc-5.4(建议至少 gcc-4.7+)。

操作步骤

控制台操作

创建项目和产品

  1. 登录 物联网开发平台控制台,选择【新建项目】。
  2. 在新建项目页面,填写项目基本信息。
    • 项目名称:输入“智能灯演示”或其他名称。
    • 项目描述:按照实际需求填写项目描述。
  3. 项目新建成功后,即可新建产品。

新建产品

  1. 进入该项目的产品列表页面,单击【新建产品】。
  2. 在新建产品页面,填写产品基本信息。
    • 产品名称输入“智能灯”或其他产品名称。
    • 产品类型选择“路灯照明”。
    • 认证方式选择“密钥认证”。
    • 通信方式随意选择。
    • 其他都为默认选项。
      新建产品

产品新建成功后,您可在产品列表页查看到“智能灯”。

创建数据模板

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

创建测试设备

在设备调试页面中,单击【新建设备】,设备名为 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. 查看通信日志,即可查看到设备成功接收到下行指令,并上报最新数据到开发平台的详细日志。