云服务器免费试用

连接mqtt云服务器(mqtt连接阿里云)

服务器知识 0 1517

本文目录:

  • 1、NE35E MQTT协议对接阿里云
  • 2、使用 Node-RED 处理 MQTT 数据
  • 3、黑群晖怎样搭建MQTT服务器

NE35E MQTT协议对接阿里云

MQTT通信协议的基本介绍参考文章 NT35 MQTT通信 ,本篇给出阿里云的基本操作,NT35E通过订阅阿里云的主题发布信息与阿里云平台相互通信。

登录阿里云 → 工作台 → 物联网平台 → 进入控制台→ 公共实例

阿里云默认通信协议为MQTT,不需要特殊选择,用户按照如下步骤创建自己的产品:

创建产品 → 添加设备 

在"查看"标签中,包含了MQTT连接的基本三元组信息,也就是后面设备要填充的基本参数

      用户每定义一类产品都会自动生成对应的Topic列表,当然我们也可以"自定义Topic"便于自己测试。

       指令解析参考《Lierda NT35ENT26E-CN AT命令手册》,这里给出使用到的AT指令对应参数说明以便于理解。

AT+LMQTTCFG=cloud,tcpconnectID[,cloud _ type,data_type ]

tcpconnectID 。MQTT Socket 标识符。范围:0~4。

cloud_type整型。2 alibaba,其他参数指定其他平台

data_type整型。阿里云平台 1 json数据 

AT+LMQTTCFG="cloud",0,2,1   对应就是对接阿里云平台,发送json格式的数据

AT+LMQTTCFG=aliauth,tcpconnectID[,product_key,device_name,device_secret]

填充阿里云平台中设备的三元组信息

AT+LMQTTCFG="aliauth",0,"a1JszCpjS61","NT35E_06011","390358fc595040aa73221e8393aba86c"

这部分是模组进行TCP链路连接(需抓包确认)

AT+LMQTTOPEN=tcpconnectID,host_name,port

host_name对应阿里云 "设备信息"→"MQTT连接参数" 中的 "mqttHostUrl"

AT+LMQTTOPEN=0,"a1JszCpjS61.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883

模组作为客户端,通过MQTT协议连接到服务器(需抓包确认)

AT+LMQTTCONN=tcpconnectID[,clientID[,username[,password]]]

clientID字符串型。客户端标识符。用户可以随便定义。 username,password 不需要填写

AT+LMQTTCONN=0,"NT35E"

AT+LMQTTSUBUNSUB=tcpconnectID,subflag,msgID,topic1[,qos1[,topic2[,qos2]d…]]

subflag整型。消息类型 0 订阅 1 取消订阅

msgID整型。数据包消息标识符。范围:0~65535。

topic带双引号的字符串型。客户端订阅或者退订的主题。长度范围:0~256 字节。

qos整型。客户端发送订阅消息(SUBSCRIBE)的 QoS 等级,此时为必选参数。2 正好一次,该主题下的消息确保接收端仅接收到一次

AT+LMQTTSUBUNSUB=0,0,1,"/a1JszCpjS61/ NT35E_06011 /user/COMMUTEST",2

这里注意topic对应参数的替换,里面的deviceName需要替换。

订阅主题之后,服务器下发的数据模组就可以正常接收了。模组下发位置

       发布消息在对应的设备目录下,如果有设备"订阅"对应的消息,平台"发布"相应的数据设备就可以接收到了。

AT+LMQTTPUB=tcpconnectID,msgID,qos,retain,topic,msglen,msg

msgID整型。 0~65535。任意定义,但qos=0 时,该参数值只能为0。

qos整型。 0 最多一次 1 至少一次 2  正好一次

retain整型 。服务器是否保存该消息。0 不保存  1 保存

topic带双引号的字符串型。 客户端发布消息的主题。长度范围:0~256 字节

msglen整型 。指定的消息数据长度。范围:0~1460。

msg字符串型。 需要发布的消息数据。

AT+LMQTTPUB=0,0,0,1,"/a1JszCpjS61/ NT35E_06011 /user/COMMUTEST",10,"1122334455"

       注意刚刚自己创建的主题属性是" 发布和订阅 ",所以模组发送该主题的信息,阿里云也是可以收到的

注意这里模组发送数据的时候,也推送了自己发送的数据,因为刚刚订阅了这个主题,所以模组订阅(收)到了对应的数据

       前面我们通过NT35E与平台进行信息交互,那么为什么是这样填写对应的参数呢,每个参数对应的说明在阿里云上是什么样的呢,用户可以查看阿里云的帮助文档进行确认。

       上面我们使用三元组的方式( 一机一密 )实现NT35E与阿里云平台通信,但实际生产过程中该方式不好实现,比如工厂有1000个设备生产,如果每个设备都复制不同的三元组,很难实现工厂批量化生产,此时可以通过 一型一密 的通信方式解决该问题。

一型一密模组端实现方式后续更新。

使用 Node-RED 处理 MQTT 数据

本文将介绍使用 Node-RED 连接到 MQTT 服务器,并对 MQTT 数据进行过滤和处理后再将其发送至 MQTT 服务器的完整操作流程。读者可以快速了解如何使用 Node-RED 对 MQTT 数据进行简单的流处理。

Node-RED 无论是在你本地的电脑上,还是树莓派等设备,亦或是云端服务器,都可以快速安装和使用,下面将使用两种比较常见的安装方式:

使用 npm 进行全局安装:

使用 Docker 进行安装:

如果使用的是 npm 进行的全局安装,那么在提示安装成功后,只需要在全局运行 node-red 命令就可以立即启动 Node-RED。

无论是使用 Docker 还是 npm 在启动成功后,我们只需要打开浏览器,输入当前地址加 1880 端口号,即可打开 Node-RED 的浏览器编辑器页面,例如在本地运行的话,打开浏览器,输入 ,当看到如下图所示页面后,说明 Node-RED 已经成功启动:

本文将使用 EMQ 提供的 免费公共 MQTT 服务器,该服务基于 MQTT 物联网云平台 - EMQX Cloud 创建,服务器接入信息如下:

在下面的功能演示中,我们将提供一个使用 Node-RED 来处理接收到的包含温湿度信息的 JSON 数据,然后对温度值进行规则判断,当温度发生改变的时候,就将当前发生改变的温度值通过 MQTT 再次发送出去的简单使用案例。

我们首先在左侧菜单栏中,拖拽一个 MQTT in 的节点到页面中,双击节点后,右侧出现一个编辑 MQTT 节点的配置页面,我们根据内容提示,新建一个连接信息后,再填入 MQTT 的其它连接信息后,点击 Done 按钮后,即可保存该节点信息。

接入数据:我们拖拽一个 JSON 节点到页面中,可以在 JSON 节点的配置页面中,配置一个 Action,我们设置为 Always convert to JavasScript Object ,因为我们无法确定发送过来的数据是一个 JSON 格式的数据还是一个 JSON 字符串,因此第一步都将接收到的消息进行一个 JSON 转换。配置完成后,我们将该节点与 MQTT in 节点进行连接。

过滤数据

我们配置完成格式化发送过来的消息数据后,我们就可以拖拽一个 filter 节点到页面中,同样双击节点后,在配置页面中配置规则,我们先选择一个 Mode,我们设置为 blcok unless value changes ,过滤规则为需要当前接收到数据的值发生改变,因为目前数据为 JSON 格式,我们判断的是 JSON 数据内的某一个值,因此我们需要在 Property 这里设置值为 msg.payload.temperature 配置完成后我们点击 Done 按钮来保存数据过滤节点的配置,最后将该节点连接到上一步配置完成后的 JSON 节点。

使用模版

当过滤完数据后,同样拖拽一个 template 节点到页面中,双击节点后来配置模版内容,使过滤完成后的数据,能通过模版将数据进行输出。当然也可以不需要这个步骤,直接将过滤后的数据进行输出。

完成以上对数据的处理和过滤后,最后我们再来将处理完成后的数据使用 MQTT 将其发送出去,拖拽一个 MQTT out 的节点到页面中,填入和 MQTT in 节点相同的连接信息,配置一个用户接收数据的 Topic,最后保存完成后,再将其和 template 节点进行连接,点击右上角的 Deploy 按钮,即可对当前规则应用进行在线部署。

在完成整个流数据处理的功能编排以后,我们使用 MQTT 5.0 客户端工具 - MQTT X 来测试和验证该功能的可用性。我们新建一个连接,连接到刚才在 Node-RED 中配置的 MQTT 云服务地址,然后输入 MQTT in 节点内的 Topic 来发送一条消息,使 Node-RED 能够接收到我们发送的 MQTT 数据。

然后我们再在 MQTT X 中订阅一个在 MQTT out 节点内配置的 Topic,用于接收处理过的消息数据。当发送一条包含了温湿度的消息数据后,我们可以接收到一条根据我们设定的消息模版发送过来的消息,再次发送就无法接收到。

因为此时温度值没有发生变化,当我们再次修改温度值后,就会发现我们又接收到了一条包含提醒温度值发生变化的消息。

至此,我们完成了安装并使用 Node-RED 连接到 MQTT 云服务,以及对 MQTT 消息数据进行过滤和处理,最后再将处理完成后的数据消息发送至 MQTT 服务器的全部流程。

Node-RED 的交互和使用方式,即用 UI 方式描述通用业务逻辑,可以降低非专业开发人员的上手门槛,使用一个可视化工具快速地创建需要的复杂执行任务,可以通过简单 Node 即节点连接构建出复杂的任务,特别是针对一些物联网的应用场景,都很有帮助。

黑群晖怎样搭建MQTT服务器

1、打开群晖Docker,注册表搜索:mqtt;

2、点击下载好的镜像文件创建容器,输入容器名字,点击高级设置

3、勾选启用自动重新启动

4、点击网络—-勾选与docker host相同的网络,点击应用,一直下一步直到创建完成

【连接mqtt云服务器】的内容来源于互联网,如引用不当,请联系我们修改。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942@qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 连接mqtt云服务器(mqtt连接阿里云)
本文地址: https://solustack.com/21087.html

相关推荐:

网友留言:

我要评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。