Skip to content

Latest commit

 

History

History
77 lines (66 loc) · 4.97 KB

网关功能.md

File metadata and controls

77 lines (66 loc) · 4.97 KB

网关功能

网关功能简介

网关产品具备普通产品的基本功能,同时支持绑定不能直连 Internet 的产品,可用于代理子设备与腾讯云物联网通信 IoT Hub 进行数据交互。本文档将讲述网关产品通过 MQTT 协议连接到腾讯云IoT Hub以及代理子设备上下线、发送和接收消息的功能。

体验网关功能需要在控制台创建网关产品,绑定其子产品,以及绑定子设备。请参考 设备接入准备网关产品接入

运行示例程序体验网关功能

填写认证连接设备的参数

示例中编辑 unit_test_config.json 文件中的参数配置信息

{
    "TESTGATEWAYSAMPLE_PRODUCT_ID":        "",
    "TESTGATEWAYSAMPLE_DEVICE_NAME":       "",
    "TESTGATEWAYSAMPLE_DEVICE_PSK":        "",
    "TESTGATEWAYSAMPLE_SUB_PRODUCT_ID":    "",
    "TESTGATEWAYSAMPLE_SUB_DEV_NAME":      "",
    "TESTGATEWAYSAMPLE_SUB_DEV_PSK":       "",
    "TESTGATEWAYSAMPLE_TEST_TOPIC":        "",
}

以密钥认证方式为例,开发者需要在 unit_test_config.json 填写 TESTGATEWAYSAMPLE_PRODUCT_ID(网关产品ID)、TESTGATEWAYSAMPLE_DEVICE_NAME(网关设备名称)、TESTGATEWAYSAMPLE_DEVICE_PSK(网关设备密钥)、TESTGATEWAYSAMPLE_SUB_PRODUCT_ID(子设备产品ID)、TESTGATEWAYSAMPLE_SUB_DEV_NAME(子设备名称)、TESTGATEWAYSAMPLE_SUB_DEV_PSK(子设备密钥)参数。

体验子设备上线

运行 GatewaySampleTest.java 的main函数,设备上线后调用gatewaySubdevOnline(),让子设备上线。示例代码如下:

private static void gatewaySubdevOnline() {
    try {
        Thread.sleep(2000);
        // set subdev online
        mqttconnection.gatewaySubdevOnline(mSubProductID, mSubDevName);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

以下是子设备成功上线的logcat日志,在控制台可查看该设备的状态已更新为在线。

17/03/2021 09:52:22,726 [main] DEBUG TXGatewayConnection gatewaySubdevOnline 234  - set 9RW4A8OOFK & test_device to Online
17/03/2021 09:52:22,728 [main] INFO  TXMqttConnection publish 567  - Starting publish topic: $gateway/operation/AP9ZLEVFKT/log_test Message: {"payload":{"devices":[{"device_name":"test_device","product_id":"9RW4A8OOFK"}]},"type":"online"}
17/03/2021 09:52:22,729 [MQTT Call: AP9ZLEVFKTlog_test] DEBUG GatewaySampleTest onPublishCompleted 347  - onPublishCompleted, status[OK], topics[[$gateway/operation/AP9ZLEVFKT/log_test]],  userContext[], errMsg[publish success]
17/03/2021 09:52:22,822 [MQTT Call: AP9ZLEVFKTlog_test] DEBUG GatewaySampleTest onMessageReceived 375  - receive message, topic[$gateway/operation/result/AP9ZLEVFKT/log_test], message[{"type":"online","payload":{"devices":[{"product_id":"9RW4A8OOFK","device_name":"test_device","result":0}]}}]

体验子设备下线

运行 GatewaySampleTest.java 的main函数,设备上线后以及子设备也上线后,调用gatewaySubdevOffline(),让子设备下线。示例代码如下:

private static void gatewaySubdevOffline() {
    try {
        Thread.sleep(2000);
        mqttconnection.gatewaySubdevOffline(mSubProductID, mSubDevName);//切换子设备下线
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

以下是子设备成功下线的logcat日志,在控制台可查看该设备的状态已更新为离线。

17/03/2021 09:58:36,324 [main] DEBUG TXGatewayConnection gatewaySubdevOffline 205  - set 9RW4A8OOFK & test_device to offline
17/03/2021 09:58:36,324 [main] INFO  TXMqttConnection publish 567  - Starting publish topic: $gateway/operation/AP9ZLEVFKT/log_test Message: {"payload":{"devices":[{"device_name":"test_device","product_id":"9RW4A8OOFK"}]},"type":"offline"}
17/03/2021 09:58:36,325 [MQTT Call: AP9ZLEVFKTlog_test] DEBUG GatewaySampleTest onPublishCompleted 347  - onPublishCompleted, status[OK], topics[[$gateway/operation/AP9ZLEVFKT/log_test]],  userContext[], errMsg[publish success]
17/03/2021 09:58:36,345 [MQTT Call: AP9ZLEVFKTlog_test] DEBUG GatewaySampleTest onMessageReceived 375  - receive message, topic[$gateway/operation/result/AP9ZLEVFKT/log_test], message[{"type":"offline","payload":{"devices":[{"product_id":"9RW4A8OOFK","device_name":"test_device","result":0}]}}]