应用场景
物联网通信,即是一种通过云端进行的远距离无线通信的方式,可应用在嵌入式设备与上位机间。
当你的嵌入式设备需要进行远距离的通信,而你又不想用使用长长的数据线时;又或者你嵌入式设备需要与计算机之间进行无线通信而你又不想使用距离有限的蓝牙时;物联网通信会成为一个相对优秀的选择。
应用举例
这里将手把手教你实现最简单的双设备通信,该设备可以是嵌入式设备(这里以外接ESP模块的STM32单片机为例),也可以是个人计算机(作者曾使用QT开发的上位机与嵌入式设备进行通信,但在这里不做描述)
云端操作
- 新建产品与设备
点击新建产品,选择密钥认证与自定义数据格式,产品名字随便起就行了
点击新建好的产品,在设备列表栏,点击添加新设备,选择使用物联网通信提供的密钥这里我们建立两个设备:Dev1和Dev2
- 设备信息
点击我们刚添加的设备,拉倒最下面可以看到设备密钥与设备的信息(记得点击右边显示)
这里有三个有用的元素(三元素),分别是产品ID,设备名称,设备秘钥。前面两个用于在物联网平台上找到该设备,最后一个则是用于连接上该设备,需要记下来,后面有重要用途
- 主题topic
在权限列表栏,可以看到该设备下已经有三个自定义topic,并且这三个topic都有不同的功能权限
event:发布,即终端设备可以发送数据到该topic,从而发送数据到云端
control:订阅,即终端设备可以通过订阅该topic,从而接收到云端发送的数据
这样,我们的终端设备就可以与云端进行双向通信了
- 规则引擎
点击左侧工具栏规则引擎,在这里,我们可以建立不同设备topic之间的关系
在上一步我们了解了终端设备与云端平台之间的通信,在这一步我们将通过设置规则引擎实现终端设备与终端设备之间的通信。我们知道,一个设备只能订阅和发布隶属于本设备的topic,所以我们在规则引擎中要做的是,把一个设备topic的数据转发到另一个设备topic
点击新建规则,规则名称我们可以起为Dev1ToDev2,点击新建好的规则,接下来我们需要设置两个部分
筛选数据:该部分主要是选择需要操作的topic,这里字段输入*代表不筛选,即所有数据都进行下一步操作;Topic选择自定义,然后一步步选择到设备Dev1的event(该topic是终端发布数据)
行为操作:该部分主要是对上一步选择的topic的数据进行操作,这里我们要把它转发到另一个设备的topic。各选项选择如下:
一个规则引擎就这样建立好了,这样终端设备1发布到Dev1/event的数据会被实时转发到Dev2/control,终端设备2只要订阅了control就能接收到来自终端设备1发送的数据,接下来还要再设置一个Dev2ToDev1规则引擎
终端操作
这里以ESP8266为例,演示终端设备如何接入腾讯云
首先我们在ESP8266中烧录腾讯云固件,并找到腾讯云AT指令使用手册(详见:上一篇博客)
我们需要使用到的AT指令大概有这么几个:连接WiFi,连接物联网设备,订阅主题,发布主题
- 连接WiFi
AT+CWMODE=1 //设置客户端模式
AT+CWJAP="WiFi名称","WiFi密码" //连接上WiFi
- 连接物联网设备
AT+TCDEVINFOSET=1,"产品ID","设备名称","设备密钥" //设置平台信息 //三元素
AT+TCMQTTCONN=1,5000,240,1,1 //配置连接服务器参数
此时我们在设备列表处状态一栏,可以看到对应的设备状态显示“在线”
注:可以使用一下AT指令与设备断开连接
AT+TCMQTTDISCONN //断开服务器连接
- 订阅主题
我们订阅control主题,此处主题的格式为 产品ID/设备名称/主题名称 ,具体到该例程就是 8IUSGNOOG8/Dev1/control
我们也可以在设备的权限列表中直接对主题进行复制
AT+TCMQTTSUB="主题",0 //订阅主题
订阅了主题之后,我们就可以接收到云端下发的数据
注:可以使用AT指令取消订阅主题
AT+TCMQTTUNSUB="主题" //取消订阅主题
- 发布主题
发布主题只需要发送一个固定的数据格式,就可以把我们的想发送的数据发发布到指定的主题
我们发送到data主题,也就是 8IUSGNOOG8/Dev1/data
AT+TCMQTTPUB="主题",0,"数据" //发布主题
设备调试
腾讯云提供了一套完善的调试系统,主要由在线调试和云日志组成
-
在线调试
点击创建好的设备,找到在线调试,我们就可以直接在云端对终端设备发布主题
Topic:选择要发布的topic,若你选择的topic并没有被终端设备所订阅,页面会提示你
消息内容:输入要发送的数据
实时日志:可以看到云端下发数据的历史记录(离开该页面后会清空) -
云日志
点击我们创建的产品,找到云日志页面
这里可以选择查看行为日志、内容日志、设备日志以及查看的时间范围,清楚的记录了设备的上线(终端设备连接到云端),主题的发布和订阅(云端接收到和发送出去的数据,但由于我们选择的是自定义数据格式,所以无法直接看到我们的发送的数据内容)
后记
以上就能够实现两个终端设备通过云端进行实时通信,该通信方式有点像串口通信:一条发送数据的线(TX:发布主题),一条接收数据的线(RX:订阅主题)。终端设备只要把这两条线接上,至于数据的交互部分则在腾讯云使用规则引擎设置
本文使用的方法好处在于简单易懂易操作,相比于网上其他教程,如使用证书认证需要自己制作二进制证书文件,使用MQTT服务器,使用JSON格式等等
但本文的内容仅限于新手入门,若想进一步了解腾讯云还需要查阅其产品文档,了解其通信原理