MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息传输协议,专为远程设备在低带宽和不稳定网络环境下设计。它具有简单、开放、易于实现的特点,广泛应用于物联网(IoT)领域。通过一个中央代理(Broker),MQTT实现消息的发布和订阅,设备可以通过订阅主题(Topic)来接收消息,或向主题发布消息。
本文将演示如何通过MQTT协议接入腾讯云,并制作一个简易的可视化平台。
简介
腾讯云物联网平台(Tencent Cloud IoT Platform)具有以下几个主要特点:
高可靠性和高可用性:
依托腾讯云强大的基础设施,提供高可靠性和高可用性的服务,确保设备与平台之间的稳定连接和数据传输。
安全性:
提供多种安全机制,包括设备认证、数据加密、访问控制等,保障物联网设备和数据的安全。
易于集成:
提供丰富的API和SDK,支持多种编程语言和操作系统,方便开发者快速集成和开发物联网应用。
设备管理:
提供完善的设备管理功能,可以对设备进行远程监控、配置和管理,支持设备固件升级、状态监控等。
数据分析和存储:
支持大规模数据的采集、存储和分析,帮助用户深入挖掘数据价值,提供可视化的数据分析工具和报表功能。
边缘计算:
支持边缘计算,将部分计算任务下放到靠近设备的边缘节点,降低延迟,提高实时性和可靠性。
多协议支持:
支持多种物联网通信协议,包括MQTT、CoAP、HTTP等,适应不同的应用场景和设备需求。
丰富的生态系统:
腾讯云物联网平台与其他腾讯云服务无缝集成,如大数据、人工智能、音视频等,提供一站式解决方案,帮助用户快速构建物联网应用。
通过这些特点,腾讯云物联网平台能够为用户提供全面的物联网解决方案,满足各种应用场景的需求。
相关地址
腾讯云官网:https://cloud.tencent.com
物联网开发平台文档:https://cloud.tencent.com/document/product/1081
MQTTX工具:https://mqttx.app
亿百特官网:https://www.ebyte.com
相关环境
本文演示使用腾讯云提供的公共实例(免费),整个通讯过程通过串口服务器模拟实际设备上报服务器。主要目的是展示腾讯云平台的MQTT协议通讯与数据可视化功能。
开启MQTT服务
为了便于观察,我们将模拟创建一个室内温度采集与控制的产品。
创建产品
首先在腾讯云中,创建一个物联网平台实例。目前(免费)公共实例提供10台设备的接入与调试。
激活或创建成功后,即可进入实例创建产品。
腾讯云提供了一些常见的物模型,可以直接使用,这里我们选择其他产品自行进行创建。
随后自定义一个产品名称,设备类型中选择“设备”。
通讯方式根据实际情况选择,这里我们使用MQTT协议通讯,因此选择以太网、Wi-Fi或者移动网络(2G/3G/4G)均可。
这里的配置会影响后续使用小程序或者APP的使用,例如需要使用蓝牙进行通讯,则通讯方式需要勾选蓝牙。在后续小程序(或者APP)使用中才能正确连接。
最后,在数据协议中,根据实际使用情况选择即可。这里我们演示中使用物模型和透传都可以。
物模型协议是腾讯云物联网开发平台定义的物模型协议,基于JSON格式可方便地进行设备向云端的数据传输,并在云端进行存储与处理。自定义透传协议则是基于MQTT协议将用户私有业务数据上云。
创建物模型
成功创建后,即可在产品开发中看到刚才我们创建的产品。
点击产品的名称,即可进入产品的开发页面。
根据指引,我们先添加一个物模型来显示设备上报的数据。这里选择自定义功能创建一个模型。
我们模拟创建一个温度采集的数据,可以将设备的温度采集并上报到服务器中。功能类型中选择属性
设置功能名称和标识符,数据类型选择浮点型,并且读写类型选择只读。
确认信息正确后,即可保存创建的功能。然后再创建一个下发控制的功能,演示中创建一个预期温度。
订阅发布主题
创建成功后,根据提示,可以设置关于产品的订阅与发布主题。演示中使用物模型的Topic即可,在列表中可以查看订阅发布主题格式。
小程序
接下来,我们开始创建可视化平台。根据提示,进入交互开发。
腾讯云提供了小程序支持,可以使用腾讯提供的服务,或者自行开发。我们演示中直接使用腾讯云提供的官方小程序进行演示。
根据提示,补充小程序的样式和功能。进入面板配置,绑定刚才创建的两个物模型。
可以看到,默认情况下,两个物模型自动添加到页面内。根据情况设置两个参数的显示风格等。
并且,我们可以,通过扫描右侧的二维码,观察在手机中显示的效果。
确认小程序功能后,即可开始添加设备。
这里的设备名称可以任意设置,只要确保一个产品内不重复即可。
成功创建后,接下来,我们可以使用设备进行连接。
连接与通讯要素
开始连接腾讯云前,需要先准备一些必要的参数。
接入地址与端口
首先是产品接入的地址与端口,在文档中心搜索MQTT 接入即可找到相关的文档信息。根据手册的介绍,需要自行修改接入地址的格式。
MQTT证书认证地址与端口:
地址:产品ID.iotcloud.tencentdevices.com
端口:1883
将产品ID替换对应位置,即可获取到MQTT的接入地址。
通讯三要素
需要获取到MQTT通讯所需的三要素:Client ID、User Name、Password。
在产品开发页面中即可获取到Client ID
但User Name与Password需要通过计算得到。同样可以在文档中找到相关的说明。
也可以使用官方提供的工具进行生成。在文档中搜索生成小工具,即可看到MQTT.fx接入介绍,在文章内,找生成小工具下载地址。
工具需要我们提供ProductID、DeviceName以及DeviceSecret的参数。在设备调试中,点击需要接入的产品,即可看到这些参数。DeviceName就是设备名称,DeviceSecret就是设备密钥。
随后将对应的参数填入,确认无误后,即可点击生成UserName和Password。
到这里我们就得到了MQTT通讯所需要的三要素:Client ID、User Name、Password。
订阅与发布主题
接下来,需要获取通讯时所需要的订阅与发布主题。订阅与发布主题在产品开发中的设备开发可以找到。
根据自身需要的主题,提取即可。根据要求替换对应的设备名称即可。
物模型协议
接下来,需要知晓通讯时报文格式,同样在手册中,搜索物模型协议,即可快速定位相关介绍部分。
演示中只需要了解属性上报的报文格式,将当前采集的温度进行上报即可。根据文档的介绍,修改对应的参数即可。
{
"method":"report", #表示对象是一个属性。
"clientToken":"123", #客户端令牌,
# "timestamp":1628646783, #时间戳,更具需求设置,可以不填
"params":{
"power_switch":1, #标识符为:power_switch 表示电源开关的状态。
"color":1, #标识符为:color 颜色的状态或模式。
"brightness":32 #标识符为:brightness 表示亮度的值。
}
}
到这里关于产品的连接与通讯所需要的所有参数就准备完毕,接下来即可开始进行连接与通讯。
MQTTX模拟通讯
在使用设备进行连接前,先使用软件进行模拟,检查准备的参数是否正确。
演示中使用的是MQTTX软件进行模拟通讯。
将刚才获取到的地址、端口、ClientID、User Name以及Password填入对应的位置。
确认参数正确后,即可尝试连接。
需要注意MQTT版本,可能会由于版本的问题,导致无法连接。推荐使用MQTT3.1.1协议版本。
正确连接到腾讯云后,通过后台看到设备调试页面中的设备,显示设备在线。
进入设备调试页面,方便观察后续数据的收发情况。
返回MQTTX软件,将订阅与发布主题,填入对应的位置。
随后根据前面介绍的报文,发送数据。
成功发送后,可以看到,服务器返回了一条包含ID信息的数据,提示发送成功。
返回腾讯云的设备调试页面,可以看到,刚才通过MQTTX上报的消息。
随后,我们在调试页面手动设置预期温度值。
然后发送。调试日志中会提示我们下行一条设备属性的控制报文。
放回到MQTTX软件,可以看到,刚才收到了一条来自服务器的报文。
设备的接入与通讯
确认所有参数正确后,接下来开始使用实物进行连接与控制。演示将使用一个串口服务器进行模拟,为了方便观察演示效果,用串口连接电脑,模拟实际使用中温度模块采集到数据后处理完成上报给服务器。关于产品的相关使用方法可以查看相关手册或视频进行了解。
首先,将设备工作模式修改到MQTT模式。
随后将刚才我们准备好的参数分别填入。
完成后保存重启设备。然后返回腾讯云观察设备是否成功接入。
接下来,使用一个串口工具。通过串口发送报文到设备。检验是否能够正常通讯。
可以看到,消息成功发送。同样在在线调试页面中也可以看到报文。
随后尝试通过服务器向设备发送参数。
小程序的连接与控制
设备与服务器能够成功通讯后,接下来尝试使用小程序,检查是否能够成功获取到产品相关信息与实现控制。
演示使用的是腾讯云官方提供的小程序,在产品交互中可以找到相关小程序二维码。
扫一扫官方提供的二维码访问小程序。
点击添加设备,通过扫一扫添加。
设备的二维码在腾讯云的设备调试界面中。
扫一扫二维码,成功将设备添加到小程序内。
点击进入产品页面,可看到刚才我们设置的交互页面。
使用串口助手修改温度参数,检验是否能够正常通讯。
最后再尝试使用小程序设置温度,观察串口助手是否能够正常收到报文。