Skip to content

Commit 223cacd

Browse files
author
donghu-jiang
committed
整理explorer订阅与取消订阅Topic.md
Change-Id: I9586c7707bddce0a79d1d3abbda7b6fd64f0552e
1 parent 4dee184 commit 223cacd

File tree

2 files changed

+96
-110
lines changed

2 files changed

+96
-110
lines changed

explorer/doc/订阅与取消订阅 Topic 主题.md

Lines changed: 0 additions & 110 deletions
This file was deleted.
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
* [订阅与取消订阅](#订阅与取消订阅)
2+
* [订阅 数据模板相关联 Topic 主题](#订阅-数据模板相关联-Topic-主题)
3+
* [取消订阅 Topic 主题](#取消订阅-Topic-主题)
4+
5+
# 订阅与取消订阅
6+
7+
在腾讯云物联网开发平台控制台(以下简称控制台)创建产品时,会默认生成一套产品的数据模板和一些标准功能,用户也可以自定义功能。数据模板对应的功能包含三大类:属性,事件和行为。控制台数据模板的使用,可参考官网 [数据模板](https://cloud.tencent.com/document/product/1081/44921) 章节。
8+
9+
产品定义数据模板后,设备可以按照数据模板中的定义上报属性、事件,并可对设备下发远程控制指令,即对可写的设备属性进行修改。数据模板的管理详见 产品定义。数据模板协议包括设备属性上报、设备远程控制、获取设备最新上报信息、设备事件上报、设备行为。对应的定义和云端下发控制指令使用的 Topic 请参考官网 [数据模板协议](https://cloud.tencent.com/document/product/1081/34916) 章节。
10+
11+
本文主要描述 如何对数据模板相关联 Topic 的订阅与取消订阅。
12+
13+
## 订阅 数据模板相关联 Topic 主题
14+
15+
运行 [TemplateSample.py](../../explorer/sample/template/example_template.py),初始化数据模板会自动订阅数据模板相关联的属性、事件和行为类型的 Topic:
16+
```
17+
$thing/down/property/{ProductID}/{DeviceName}
18+
$thing/down/event/{ProductID}/{DeviceName}
19+
$thing/down/action/{ProductID}/{DeviceName}
20+
$thing/down/service/{ProductID}/{DeviceName}
21+
```
22+
23+
示例代码如下:
24+
```python
25+
# 构造QcloudExplorer
26+
qcloud = QcloudExplorer(device_file="explorer/sample/device_info.json", tls=True)
27+
# 初始化日志
28+
logger = qcloud.logInit(qcloud.LoggerLevel.DEBUG, enable=True)
29+
30+
# 注册mqtt回调
31+
qcloud.registerMqttCallback(on_connect, on_disconnect,
32+
on_message, on_publish,
33+
on_subscribe, on_unsubscribe)
34+
# 获取设备product id和device name
35+
product_id = qcloud.getProductID()
36+
device_name = qcloud.getDeviceName()
37+
38+
# mqtt连接
39+
qcloud.connect()
40+
41+
# 数据模板初始化,自动订阅相关Topic
42+
qcloud.templateInit(product_id, device_name, on_template_property,
43+
on_template_action, on_template_event, on_template_service)
44+
qcloud.templateSetup(product_id, device_name, "sample/template/template_config.json")
45+
```
46+
47+
观察日志。
48+
```
49+
2021-07-21 16:59:34,956.956 [log.py:35] - DEBUG - LoopThread thread enter
50+
2021-07-21 16:59:34,956.956 [log.py:35] - DEBUG - connect_async (xxx.iotcloud.tencentdevices.com:8883)
51+
2021-07-21 16:59:35,432.432 [client.py:2165] - DEBUG - Sending CONNECT (u1, p1, wr0, wq0, wf0, c1, k60) client_id=b'xxxx'
52+
2021-07-21 16:59:35,491.491 [client.py:2165] - DEBUG - Received CONNACK (0, 0)
53+
2021-07-21 16:59:35,491.491 [log.py:35] - DEBUG - on_connect:flags:0,rc:0,userdata:None
54+
2021-07-21 16:59:35,958.958 [client.py:2165] - DEBUG - Sending SUBSCRIBE (d0, m1) [(b'$thing/down/property/xxx/dev1', 0)]
55+
2021-07-21 16:59:35,958.958 [log.py:35] - DEBUG - subscribe success topic:$thing/down/property/xxx/dev1
56+
2021-07-21 16:59:35,959.959 [client.py:2165] - DEBUG - Sending SUBSCRIBE (d0, m2) [(b'$thing/down/action/xxx/dev1', 0)]
57+
2021-07-21 16:59:35,959.959 [log.py:35] - DEBUG - subscribe success topic:$thing/down/action/xxx/dev1
58+
2021-07-21 16:59:35,960.960 [client.py:2165] - DEBUG - Sending SUBSCRIBE (d0, m3) [(b'$thing/down/event/xxx/dev1', 0)]
59+
2021-07-21 16:59:35,960.960 [log.py:35] - DEBUG - subscribe success topic:$thing/down/event/xxx/dev1
60+
2021-07-21 16:59:35,960.960 [client.py:2165] - DEBUG - Sending SUBSCRIBE (d0, m4) [(b'$thing/down/service/xxx/dev1', 0)]
61+
2021-07-21 16:59:35,960.960 [log.py:35] - DEBUG - subscribe success topic:$thing/down/service/xxx/dev1
62+
2021-07-21 16:59:36,006.006 [client.py:2165] - DEBUG - Received SUBACK
63+
2021-07-21 16:59:36,006.006 [log.py:35] - DEBUG - on_subscribe:mid:0,granted_qos:1,userdata:None
64+
2021-07-21 16:59:36,009.009 [client.py:2165] - DEBUG - Received SUBACK
65+
2021-07-21 16:59:36,010.010 [client.py:2165] - DEBUG - Received SUBACK
66+
2021-07-21 16:59:36,010.010 [log.py:35] - DEBUG - on_subscribe:mid:0,granted_qos:2,userdata:None
67+
2021-07-21 16:59:36,010.010 [log.py:35] - DEBUG - on_subscribe:mid:0,granted_qos:4,userdata:None
68+
2021-07-21 16:59:36,016.016 [client.py:2165] - DEBUG - Received SUBACK
69+
2021-07-21 16:59:36,016.016 [log.py:35] - DEBUG - on_subscribe:mid:0,granted_qos:3,userdata:None
70+
```
71+
观察日志可以看到成功设备订阅了Topic.
72+
73+
## 取消订阅 Topic 主题
74+
75+
运行 [TemplateSample.py](../../explorer/sample/template/example_template.py),退出时调用`templateDeinit()`接口取消订阅 Topic.
76+
77+
示例代码如下:
78+
```python
79+
# 注销数据模板
80+
qcloud.templateDeinit(product_id, device_name)
81+
82+
# 断开mqtt连接
83+
qcloud.disconnect()
84+
```
85+
86+
观察输出日志。
87+
```
88+
2021-07-21 17:21:33,833.833 [client.py:2165] - DEBUG - Sending UNSUBSCRIBE (d0, m5) [b'$thing/down/property/xxx/dev1', b'$thing/down/event/xxx/dev1', b'$thing/down/action/xxx/dev1', b'$thing/down/service/xxx/dev1']
89+
2021-07-21 17:21:33,913.913 [client.py:2165] - DEBUG - Received UNSUBACK (Mid: 5)
90+
2021-07-21 17:21:33,914.914 [log.py:35] - DEBUG - on_unsubscribe:mid:5,userdata:None
91+
2021-07-21 17:21:35,218.218 [log.py:35] - DEBUG - disconnect
92+
2021-07-21 17:21:35,218.218 [client.py:2165] - DEBUG - Sending DISCONNECT
93+
2021-07-21 17:21:35,219.219 [log.py:35] - DEBUG - LoopThread thread exit
94+
2021-07-21 17:21:35,219.219 [log.py:35] - DEBUG - on_disconnect:rc:0,userdata:None
95+
```
96+
观察日志可以看到成功设备取消订阅了Topic.

0 commit comments

Comments
 (0)