0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【教程】设备通过MQTT协议接入OneNET平台,建立可视化界面

亿佰特物联网应用专家 2024-10-25 08:06 次阅读

物联网领域,传感器与服务器的通信信息的收集以及MQTT协议都是可以考虑的方案之一。MQTT通常用于需要低功耗和低带宽的场景,如物联网设备、传感器网络、移动应用等。它的轻量级和高效特性使其非常适合在资源受限的设备和不可靠网络环境中使用。

什么是MQTT协议?

MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传递协议,专为资源受限的设备和低带宽、不可靠网络环境设计。它最初由IBM开发,现已成为物联网领域的标准协议之一。MQTT的主要特点包括:

①发布/订阅模型:MQTT使用发布/订阅(Pub/Sub)通信模式,这与传统的请求/响应模型不同。在这种模式下,客户端可以发布消息到某个主题(Topic),而其他对该主题感兴趣的客户端可以订阅该主题,并接收相应的消息。

②轻量级和高效:MQTT协议头部非常小,开销低,适用于带宽受限的网络环境。

③可靠性:MQTT提供了三种不同的服务质量(QoS)级别,确保消息的传递可靠性:

QoS 0:最多一次传递(At most once)

QoS 1:至少一次传递(At least once)

QoS 2:只有一次传递(Exactly once)

④持久会话:MQTT支持持久会话,即客户端断开连接后,服务器可以保存该客户端的订阅信息和未接收的消息,当客户端重新连接时,可以继续接收未接收的消息。

⑤保留消息:发布者可以发送一条带有保留标志的消息,服务器会保存这条消息,并在有新的订阅者订阅该主题时,将这条消息发送给订阅者。

⑥遗嘱消息:客户端可以在连接时指定一条遗嘱消息,当客户端意外断开连接时,服务器会将这条遗嘱消息发布到指定的主题。

⑦安全性:MQTT可以通过TLS/SSL进行加密,确保传输数据的安全性。此外,MQTT还支持用户名和密码认证机制。

OneNet平台准备

首先,在OneNet平台创建一个产品。OneNET平台官网地址:https://open.iot.10086.cn

在「物联网开放平台」中找到「产品开发」,然后创建一个新的产品。

f8a211ac-9264-11ef-b5cd-92fbcf53809c.png

在产品品类中,提供了一些预设的模版,可以直接使用。

f8d1430a-9264-11ef-b5cd-92fbcf53809c.png

根据实际使用情况填入信息即可。为了方便后续数据观察,数据协议选择数据流协议,以便后续建立可视化模版。

f8f2cd9a-9264-11ef-b5cd-92fbcf53809c.png

确保接入协议为MQTT,其他信息根据实际情况进行设置。确认无误后创建新的产品。

成功创建产品后,可以在产品开发页面看到刚才创建的产品。接着,进入产品开发页面。

f91989e4-9264-11ef-b5cd-92fbcf53809c.png

添加一个数据流模版,数据流名称、单位名称及单位符号根据实际情况填写。这里为了演示,模拟采集环境的温湿度情况。

f94f28b0-9264-11ef-b5cd-92fbcf53809c.pngf9783962-9264-11ef-b5cd-92fbcf53809c.png

创建成功后,记录下创建的数据流模版名称,稍后发布消息需要用到。

接下来需要创建新的设备。在设备接入管理中的设备管理页面,点击添加设备。

f9a11274-9264-11ef-b5cd-92fbcf53809c.png

在所属产品中选择刚才创建的产品,在设备名称中自定义设置一个设备名称。其他信息根据情况设置。

f9cfbb9c-9264-11ef-b5cd-92fbcf53809c.png

成功配置后,可以在设备管理中看到刚才创建的设备。

fa07d50e-9264-11ef-b5cd-92fbcf53809c.png

随后,点击详情,进入设备相关页面。可以看到一些基本信息,如设备ID、产品ID、设备名称及设备密钥。记录下这些数据,之后连接与通讯需要用到。

fa2ffb1a-9264-11ef-b5cd-92fbcf53809c.png

MQTT连接通讯元素

成功创建OneNet产品后,准备MQTT连接通讯所需的三要素及订阅发布主题。

MQTT三要素

使用标准的MQTT三要素通讯,需要了解产品的连接地址、端口、ClientID、UserName、Password。连接地址、端口在产品相关手册中可以找到。在产品文档中搜索“MQTT地址”即可快速定位到接入地址及端口。

fa5e627a-9264-11ef-b5cd-92fbcf53809c.pngfa8f84d6-9264-11ef-b5cd-92fbcf53809c.png

注意:

MQTT接入地址可能发生变化,实际接入地址请以实际文档说明为准。

ClientID、UserName在设备详情中可以直接得到,Password需要经过key计算得到token。

fab9c1d8-9264-11ef-b5cd-92fbcf53809c.png

具体的Token算法可以通过产品手册了解。这里使用官方提供的工具进行计算。

官方下载地址:https://open.iot.10086.cn/college/video/onenet-portal/2024-04-19/17134946071850.exe

软件中的「res」在手册中阐述了相关参数。「et」为时间戳:

fae61a9e-9264-11ef-b5cd-92fbcf53809c.jpg

根据手册中的介绍格式:products/{产品ID}/devices/{设备名称},将产品ID与设备名称进行修改,即可得到res值。

et为时间戳,填写过期时间。这里为了演示,直接填写「9999999999」。

注意:et是unix时间,通常不建议直接设置为9999999999。

fb091e22-9264-11ef-b5cd-92fbcf53809c.png

key是设备密钥,将对应的值填入即可。确认填入信息无误后,即可生成MQTT连接需要的Password。

fb310bf8-9264-11ef-b5cd-92fbcf53809c.png

到这里我们就准备好了MQTT连接的所有要素:连接地址、端口、ClientID,UserName,Password

订阅与发布主题

接下来,还需要获取上报与接收的订阅发布主题。同样,这里我们通过手册也可以找到官方发布的订阅与发布主题属性。

fb592642-9264-11ef-b5cd-92fbcf53809c.png

需要根据实际的使用情况选用适合的订阅与发布。这里找到我们需要的订阅与发布主题。本次演示使用【订阅全部主题】以及【上报数据点】这两个订阅与发布主题。

订阅全部物模型相关主题:$sys/{pid}/{device-name}/#

设备上传数据点请求:$sys/{pid}/{device-name}/dp/post/json

根据手册中的要求,将「设备名称」以及「产品ID」填入即可。

发布消息

确认连接地址与订阅发布主题后,了解发布消息时使用的格式。这里演示使用数据流payload格式进行发布。payload示例如下:

{"id": 123,"dp": {"数据流名称": [{"v": #值}],"数据流名称": [{"v": #值}]}}

这里演示上报的是温度与湿度,将准备的温度与湿度名称填入即可。

连接测试

接下来,即可开始使用设备连接。这里首先我们确认下得到的参数是否能够正常连接与通讯。

MQTTX模拟通讯

使用MQTT相关软件进行模拟,演示使用的是MQTTX软件进行模拟,首先将连接要素填入对应的位置。

fb8ac15c-9264-11ef-b5cd-92fbcf53809c.png

注意:这里可能会由于MQTT版本导致连接错误。目前尝试「MQTT 3.1.1」版本可以正常连接。需要特别留意版本。

随后将准备好的发布与订阅主题填入对应的位置。随后尝试连接,如果成功连接到OneNet平台,在设备管理中我们可以看到设备在线的提示。

fbb0b5ce-9264-11ef-b5cd-92fbcf53809c.pngfbdc75b0-9264-11ef-b5cd-92fbcf53809c.png

接下来我们再把订阅与发布主题填入对应的位置。

fc0e04cc-9264-11ef-b5cd-92fbcf53809c.pngfc3e1b8a-9264-11ef-b5cd-92fbcf53809c.png

准备就绪,接下来即可开始尝试进行发布消息,根据前面准备好的payload消息填入对应的位置。然后发布消息。

fc5f2e88-9264-11ef-b5cd-92fbcf53809c.png

可以看到,成功发送消息后,服务器返回了一个消息,告诉我们“id:xxx”的消息已经收到。我们返回OneNet平台的设备管理中的数据流可以看到刚才发布的消息已经成功收到。

fc8b5ee0-9264-11ef-b5cd-92fbcf53809c.png

实物连接与通讯

确认获取的参数都无误后,接下来我们可以通过一个实际的设备进行模拟实际使用中的情况。在实际使用中,设备可能多种多样,这里为了方便,使用一个串口服务器进行模拟。关于产品的使用可以根据产品手册或者相关视频了解,这里具体不展开讲解。首先将产品设置为MQTT工作模式,并将对应的参数分别填入。

fcb7e4f6-9264-11ef-b5cd-92fbcf53809c.png

确认无误后,保存参数并重启,稍等片刻,在OneNet中的设备管理页面查看是否正常接入。

fce10ef8-9264-11ef-b5cd-92fbcf53809c.png

这里为了方便演示,我们使用电脑模拟温度采集模块,将采集到的温湿度数据进行处理后通过串口发送给串口服务器。这里使用一个串口工具,将刚才我们准备好的上报消息,直接通过串口发送至串口服务器。

fd0aefd4-9264-11ef-b5cd-92fbcf53809c.png

然后观察OneNet平台是否能够正常收到数据。

fd44b0ca-9264-11ef-b5cd-92fbcf53809c.png

可以看到,OneNet成功收到了串口服务器上报的消息。

可视化界面

到这里,关于产品的MQTT连接与通讯就全部完成了。但目前观察产品上报的数据有些繁琐,OneNet可以自行开发简单的云平台。我们根据这里的演示,建立个数据可视化的平台。我们在物联网平台中,找到应用开发中的数据可视化。

fd673c08-9264-11ef-b5cd-92fbcf53809c.pngfd92b3c4-9264-11ef-b5cd-92fbcf53809c.png

首先,我们新建一个项目。这里OneNet提供了一些模版可以直接使用,我们可以直接使用或者自己新建。

fdb3a912-9264-11ef-b5cd-92fbcf53809c.png

这里我们只是为了演示,所以使用一个空白模版,自己创建一个页面。

fde64890-9264-11ef-b5cd-92fbcf53809c.png

完成后,进入项目进行编辑。

ff3b87a0-9264-11ef-b5cd-92fbcf53809c.png

接下来我们就可以看到一个可视化的编辑页面,可以根据自己喜好进行设计。这里我们只是为了演示效果,所以任意选择一个图标表示即可。

ff644546-9264-11ef-b5cd-92fbcf53809c.png

随后,我们将数据绑定。在右侧的数据页面中,选择管理数据源。

ff93a908-9264-11ef-b5cd-92fbcf53809c.png

数据类型选择物联网平台。其中名称设定为我们的数据流名称,UserID是OneNet用户管理页面中可以找到。

ffc6b56e-9264-11ef-b5cd-92fbcf53809c.png

accessKey就是设备密钥,产品ID、设备名称都可以在设备的详情中可以找到。

fff0a496-9264-11ef-b5cd-92fbcf53809c.png

填写完成后,数据流会自动匹配,下拉即可看到刚才我们设置的两个属性。

0015fd4a-9265-11ef-b5cd-92fbcf53809c.png

刷新时间与获取点数任意设置即可。完成后点击创建。

0047a91c-9265-11ef-b5cd-92fbcf53809c.png

随后下拉刚才我们创建的数据源,即可看到已经获取到了数据。

006e6584-9265-11ef-b5cd-92fbcf53809c.png

同样,我们用同样的方法再把湿度创建为湿度数据。

009a4c08-9265-11ef-b5cd-92fbcf53809c.png

接下里即可开始绑定数据。选择刚才创建的数据源,随后,需要根据要求,在数据过滤器中设置对应数据。

00c7e640-9265-11ef-b5cd-92fbcf53809c.png

然后点击数据处理结果,检查输出数据是否符合要求。

00f07af6-9265-11ef-b5cd-92fbcf53809c.png01197abe-9265-11ef-b5cd-92fbcf53809c.png

同样的方法,设置湿度、温度显示。

014453ba-9265-11ef-b5cd-92fbcf53809c.png

随后,确认无误后,保存发布项目,即可通过链接访问。

01788ffe-9265-11ef-b5cd-92fbcf53809c.png019cab28-9265-11ef-b5cd-92fbcf53809c.png

复制连接,然后确认发布,通过链接,检查是否能够成功访问。

01c165e4-9265-11ef-b5cd-92fbcf53809c.png

随后,我们再使用串口工具上报数据,检查数据是否能够同步刷新。

01e64b0c-9265-11ef-b5cd-92fbcf53809c.png021cea36-9265-11ef-b5cd-92fbcf53809c.png

产品推荐

024a04d0-9265-11ef-b5cd-92fbcf53809c.png亿佰特串口服务器产品涵盖单串口服务器、多串口服务器、Wi-Fi串口服务器以及串口服务器模组等,可提供串口转网络功能,能够将串口数据转换成TCP/IP协议数据,实现串口与网络的双向透明传输。被广泛应用于考勤系统、机房监控、电力监控等场景。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 设备
    +关注

    关注

    2

    文章

    4472

    浏览量

    70531
  • MQTT协议
    +关注

    关注

    0

    文章

    97

    浏览量

    5345
  • OneNET
    +关注

    关注

    1

    文章

    51

    浏览量

    12769
收藏 人收藏

    评论

    相关推荐

    OneNET Studio云平台STM32物联网开发(1)- MQTT协议设备接入数据上报测试

    OneNET Studio云平台STM32物联网开发(1)- MQTT协议设备接入数据上报测试
    的头像 发表于 09-25 01:01 1795次阅读
    <b class='flag-5'>OneNET</b> Studio云<b class='flag-5'>平台</b>STM32物联网开发(1)- <b class='flag-5'>MQTT</b><b class='flag-5'>协议</b><b class='flag-5'>设备</b><b class='flag-5'>接入</b>数据上报测试

    [Micropython][ESP8266] TPYBoard V202 之MQTT协议接入OneNET平台

    MQTT会进入到我们生活的各各方面,本篇文章教大家利用TPYBoardv202使用MQTT协议接入OneNET
    发表于 07-22 13:43

    ONENET3.0私有协议设备接入快速入门(一)

    我们知道OneNET2.0中支持的设备接入协议都是公开协议,到目前为止平台支持的公开
    发表于 12-27 12:36

    WIZnet W5500系列培训活动之“MQTT协议讲解和实践(接入OneNET)”

    设备连接。在本期培训中,我们将以STM32+W5500为硬件平台,一步步剖析MQTT协议原理及其在OneNET
    发表于 01-12 13:19

    [MicroPython]TPYBoard v202 MQTT协议2:上传数据点到OneNET平台

    ] 在之前的教程中,学习过如何使用MQTT协议接入OneNET平台,同时获取该平台下发的命令实现
    发表于 09-14 10:48

    【HarmonyOS】在鸿蒙开发板上使用MQTT协议OneNET实现第一个物联网项目

    产品应当包括设备、云平台、手机APP。我将在鸿蒙系统上移植MQTT协议OneNET接入
    发表于 10-26 16:59

    NodeMCU通过MQTT协议接入OneNET语言

    本章主要讲解NodeMCU通过MQTT协议接入OneNET语言:LUA;软件:ESPlorer一. 首先让我们来了解一下
    发表于 11-01 06:19

    基于OneNET View 3.0的可视化数据监测系统的设计资料分享

    姿态定位制作说明功能说明将维特WT901C姿态传感器数据通过合宙Air724UG-4G模块将数据传输到onenet平台,并建立onenetview
    发表于 01-20 06:28

    OpenHarmony轻量系统开发【12】OneNET接入

    /hihope-3861-smart-home-kit12.1 OneNET云介绍通常来说,一个物联网产品应当包括设备、云平台、手机APP。我将在鸿蒙系统上移植MQTT
    发表于 01-26 14:19

    基于RT-Thread+RA6M4上传onenet平台的设计资料分享

    控制台-多协议接入-MQTT旧版-添加产品(设备接入协议M
    发表于 07-25 12:39

    基于RT-Thread+RA6M4上传onenet平台的设计实现

      依次选择控制台-多协议接入-MQTT旧版-添加产品(设备接入协议
    发表于 09-23 15:38

    ESP8266通过MQTT协议连接ONENET

    ESP8266通过MQTT协议连接ONENET一、设计目标二、ONENET平台搭建三、硬件准备四
    发表于 01-12 19:58 53次下载
    ESP8266<b class='flag-5'>通过</b><b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>连接<b class='flag-5'>ONENET</b>

    如何接入OneNET平台

    下面介绍下如何接入OneNET平台,采用MQTT协议。 首先在百度当中输入OneNET,然后点击
    的头像 发表于 05-26 11:04 5901次阅读
    如何<b class='flag-5'>接入</b><b class='flag-5'>OneNET</b><b class='flag-5'>平台</b>

    如何使用OneNET平台MQTT功能?

    MQTT是一种轻量级的通信协议,适用于物联网设备之间的可靠通信。本教程将介绍如何使用OneNET平台M
    的头像 发表于 10-20 08:21 1115次阅读
    如何使用<b class='flag-5'>OneNET</b><b class='flag-5'>平台</b>的<b class='flag-5'>MQTT</b>功能?

    MQTT.fx 连接Onenet协议接入平台 MQTT协议(旧版)详解

    TCP dtu.heclouds.com 183.230.40.40 1811 打开Onenet平台,多协议接入 选择MQTT
    的头像 发表于 09-30 15:20 466次阅读
    <b class='flag-5'>MQTT</b>.fx 连接<b class='flag-5'>Onenet</b> 多<b class='flag-5'>协议</b><b class='flag-5'>接入</b><b class='flag-5'>平台</b> <b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>(旧版)详解