最近更新时间:2023.11.02 11:58:28
首次发布时间:2023.11.02 11:58:28
本文介绍了边缘智能官方 MQTT 驱动的使用方法。
MQTT(Message Queuing Telemetry Transport)是一种轻量级的通信协议,用于在物联网和传感器网络中进行消息传递。MQTT 协议的设计目标是在带宽有限、网络不稳定的环境下实现可靠的通信。它使用简单的发布-订阅模型,其中有一个消息代理(Broker)负责接收和转发消息;设备可以作为发布者(Publisher)将消息发布到代理,也可以作为订阅者(Subscriber)订阅感兴趣的消息主题。
边缘智能提供了官方 MQTT 驱动。通过在一体机上部署官方 MQTT 驱动并接入设备,您可以使一体机成为一个 MQTT 消息订阅者。MQTT 驱动能够从 MQTT 服务器(即消息代理 Broker)订阅来自特定发布者的消息。这些发布者是接入到一体机的 MQTT 设备。
您可以在边缘智能控制台的 设备管理 > 驱动模板 页面,查看边缘智能的官方 MQTT驱动。
使用 MQTT 驱动前,您需要准备一台边缘一体机,并完成以下工作:
使用 MQTT 驱动前,您需要准备可访问的 MQTT 服务器。为了测试消息接收和转发,您还需要准备一个 MQTT 客户端来与 MQTT 服务器建立连接。为便于演示操作,本教程将在一体机上部署 MQTT 服务,使一体机成为一个 MQTT 服务器;本教程还使用了 MQTT 客户端工具来模拟消息的发送。
注意
如果您有可用的 MQTT 服务器,请跳过这部分内容。
在本章节,您将使用边缘智能的官方 Helm 模板(emqx
),在一体机上部署 MQTT 消息服务,使一体机成为 MQTT 消息服务器。
登录边缘智能控制台。
在左侧导航栏顶部的 我的项目 区域,选择您的项目。
在左侧导航栏,选择 应用管理 > Helm 应用。
单击 官方模板 页签。
定位到 emqx 模板,单击 操作 列的 部署。
在 部署应用 页面,修改以下参数的设置,然后单击 确认。
emqx
,表示 MQTT 服务器的名称。service
部分的参数配置做以下修改:
service.type
的值设置为 NodePort
。service.nodePorts.mqtt
的值设置为 31883
。service.nodePorts.dashboard
的值设置为 30000
。等待应用部署成功后,您可以访问 MQTT 服务器的仪表盘来验证服务器是否正常。验证方法如下:
http://<一体机IP>:30000
。注意
本地计算机必须与一体机处于相同的私有网络。
admin
/public
)登录 MQTT 服务器的仪表盘。如果登录成功,表示 MQTT 服务器已经正常工作。
MQTTX 是一款 MQTT 客户端工具,它支持 MQTT 5.0、3.1.1 和 3.1 协议。在本章节,您将在自己的终端设备上安装 MQTTX,并与 MQTT 服务器建立连接。
连接成功后,您可以前往 MQTT 服务器的仪表盘,在 监控 > 客户端 列表查看已连接的客户端。
登录边缘智能控制台。
在左侧导航栏顶部的 我的项目 区域,选择您的项目。
在本教程中,我们使用 MQTT 作为设备模板的名称。
您将进入模板详情。接下来,您需要在设备模板详情中完成物模型定义。
在设备模板详情页,单击 物模型定义 页签。
单击 编辑。
在 默认模块 下,根据需要 添加自定义功能。
您可以添加 属性 类型的自定义功能。每个自定义功能表示 MQTT 服务器从客户端接收的某种数据。
在本教程中,我们添加了下表罗列的自定义功能用于测试。
功能类型 | 功能名称 | 标识符 | 数据类型 | 数据定义 |
---|---|---|---|---|
属性 | bool | bool | bool | 0-off、1-on |
属性 | enum | enum | enum | 枚举对:1-一、2-二 |
属性 | text | text | text | 数据长度:1024 |
属性 | int | int | int | 无 |
添加完自定义功能,在 编辑物模型 页面左下角,单击 确定。
在 发布新版本 对话框,设置 版本号 和 描述,然后单击 确定。
在本教程中,我们使用 1.0.0.0 作为物模型的版本号。
发布版本后,您将会得到如下图所示的物模型。
接下来,您需要在 设备接入 页签依次完成以下操作:部署驱动实例、添加驱动通道、添加设备。
您提交部署请求后,系统将在一体机上部署驱动实例。部署过程涉及到数据传输。根据现场网络环境不同,部署所需时间不同。请确保您的一体机在线,并耐心等待部署完成。当驱动部署成功后,驱动实例状态 将变为 运行中。
驱动通道表示多个设备与驱动通信时所使用的相同配置。在 MQTT 驱动使用场景下,MQTT 驱动可以从一个 MQTT 服务器(消息代理)订阅来自多个设备(发布者)的消息。一个驱动通道就表示一种订阅途径,它定义了从一个 MQTT 服务器订阅消息的通用配置。
配置项 | 说明 |
---|---|
通道名称 | 为通道设置一个名称。允许使用任意字符,并且长度不超过 32 个字符。 |
协议 | 选择 mqtt。 |
服务器地址 | 填写 MQTT 服务器的连接地址。
|
端口号 | 填写 MQTT 服务的端口号。默认端口号是 1883 。 |
Client ID | 按照 MQTT 规范,为 MQTT 驱动设置一个客户端 ID。示例:mqtt-driver 。 |
用户名 & 密码 | 填写分配给 MQTT 驱动的用户名和密码。
|
成功添加驱动通道后,您可以单击驱动以展示或隐藏驱动通道。
配置项 | 说明 |
---|---|
名称 | 为设备设置一个名称。
|
设备模板 | 选择您为 MQTT 客户端创建的设备模板。 |
Topic前缀 | 可选。设置订阅消息的 Topic 前缀。如果不设置该参数,那么驱动默认订阅以
|
子协议类型 | 选择 mqtt。 |
描述 | 为设备添加描述。 |
完成以上操作后,MQTT 驱动将自动与 MQTT 服务器建立连接。您可以前往 MQTT 服务器的仪表盘,在 监控 > 客户端 页面查看新建的客户端。新建的客户端的 ID 就是您在驱动通道中设置的 Client ID。
默认情况下,一体机未开启向边缘智能控制台上报数据的功能。您必须在一体机上部署 数据上报 类型的北向通道,才能允许一体机将设备的属性数据上报到边缘智能控制台。
在左侧导航栏,选择 设备管理 > 北向通道。
单击 创建北向通道。
在 创建北向通道 页面,选择 数据上云 类型,并选择将北向通道部署到您的边缘一体机。
注意
每种类型的北向通道仅允许有一个。如果您已经创建过 数据上云 类型的北向通道,则无需创建新的北向通道。您只需编辑已有北向通道的配置,将您的边缘一体机添加到部署列表。更多信息,请参见编辑北向通道。
等待北向通道在一体机部署成功。
部署成功后,北向通道在一体机上的状态将变为 运行中。
您可以通过 MQTTX 客户端向 MQTT 服务器发送测试数据。MQTT 接收的测试数据将通过北向通道上报到边缘智能控制台。
以发送 int 类型测试数据为例。在 MQTTX 客户端的连接页面,发送测试数据到以下 Topic:test/mqtt-dv1/int
。您也可以模拟发送其他类型的数据进行测试。
在左侧导航栏,选择 设备管理 > 设备实例。
找到 MQTT 设备,单击设备的名称。
单击 运行状态 页签。
设置一个时间段(包含您发送测试数据的时间),查看 MQTT 设备的数据。
下图展示了通过 MQTTX 客户端发送到 MQTT 服务器的测试数据。