总结

MQTT是一种开放的OASIS和ISO标准轻量级发布-订阅网络协议,用于在设备之间传输消息。典型的MQTT通信拓扑包括:

  • MQTT发布者→向服务器发送信息的设备;
  • MQTT代理→存储数据的服务器;
  • MQTT订阅者→读取/监视服务器上发布的数据的设备。

目前,RouterOSl雷竞技可以充当MQTT发布者,也可以通过容器特性。

配置

子菜单:/物联网mqtt

请注意物联网包装是必需的。

RouterOS 6.48.3版本自带IoT包。l雷竞技你可以从我们的下载页面-在“额外包裹”栏。

您可以在下面找到更多MQTT发布场景的应用程序示例:

一)MQTT/HTTPS示例与AWS云平台

b)MQTT示例与Azure云平台

c)MQTT和ThingsBoard配置

上述示例中的设置适用于任何RouterOS设备。l雷竞技唯一需要记住的是,AWS和Azure的示例展示了从蓝牙有效负载构建MQTT消息的脚本,目前只有支持蓝牙。对于不是l雷竞技KNOT的RouterOS设备,您将需要根据需要更改脚本(例如,您可以使用本指南中的基本脚本)。

代理

使用实例添加一个新的代理。

[admin@device] /iot MQTT代理添加

可配置属性如下所示:

财产 描述
地址IP |主机名;默认值:) 代理的IP地址或主机名
证书字符串;默认值:)
将用于SSL连接的证书

客户机id字符串;默认值:)

用于连接的唯一ID。代理使用这个ID来标识客户端。

的名字字符串;默认值:)

代理的描述性名称

密码字符串;默认值:)

代理的密码(如果代理需要)

港口整数:0 . . 1 - 4294967295;默认值:1883

代理使用的网络端口

ssl是|不是;默认值:没有

Secure Socket层配置
用户名字符串;默认值:) 代理的用户名(如果代理需要)

发布

财产 描述
代理字符串;默认值:)
选择要在其中发布消息的代理

消息字符串;默认值:)

希望发布到代理的消息

qos整数:0 . . 1 - 4294967295;默认值:0

服务质量参数,由代理定义

保留是|不是;默认值:没有

如果没有人订阅该主题,是保留该消息还是丢弃该消息。此参数由代理定义。

主题字符串;默认值:)

主题,由代理定义

MQTT发布的示例如下所示:

[admin@device] /iot mqtt> publish broker=AWS topic=my/test/topic message="{\"temperature\":15}"

在这种情况下,AWS是在代理部分中配置的代理名称,我的/测试/主题主题(在服务器端/代理本身上配置)和”{\“温度\”:15}”是您希望发布的消息(在这个特定的示例中,是JSON格式)。Retain和QoS参数都是可选的——都由代理定义。

在这个场景中,我们的代理是AWS

为了查看显示的消息,您需要预先订阅主题(在本例中,我的/测试/主题).

订阅主题后,就可以发布消息。AWS(或任何其他代理)应该显示以下消息:


您还可以使用脚本(使该过程自动化)。例如,你可以这样运行一个脚本:

#所需软件包:物联网

################################ 配置 ################################
应该用于发布的现有MQTT代理的名称
:本地代理“AWS”

# MQTT主题,消息应该在其中发布
:local topic" my/test/topic"

#################################### 系统 ###################################
:put("[*]正在收集系统信息…")
:local cpuLoad [/system resource get cpu-load]
: free-memory[/系统资源获取free-memory]
:local usedMemory ([/system resource get total-memory] - $freeMemory)
:local rosVersion[/系统包get value-name=version \ .
[/系统包查找where name ~ "^routeros"]]l雷竞技
:local model [/system ios版雷竞技官网入口routerboard get value-name=model]
:local serialNumber [/system ios版雷竞技官网入口routerboard get value-name=serial-number]
:local upTime[/系统资源get upTime]

#################################### MQTT #####################################
:本地消息\
“{\”模式\”:\ " $模型\ ",\
serialNumber美元\“sn \”,\“\”,\
rosVersion美元\“活性氧\”,\“\”,\
cpu \“\”:cpuLoad美元,\
“眉目”\ \”:usedMemory美元,\
fmem \“\”:$ freeMemory \
\ \“运行时间”:\ " $正常运行时间\“}”

:日志信息"$message";
:put("[*]总消息大小:$[:len $message] bytes")
:put("[*]发送消息到MQTT代理…")
/iot MQTT发布broker=$broker topic=$topic message=$message
:put ("[*] Done")

脚本从RouterOS设备收集数据(型号、序列号、RouterOS版本、当前l雷竞技CPU、已用内存、空闲内存和正常运行时间),并以JSON格式将消息(数据)发布给代理:

不要忘记根据您的设置更改脚本的“Configuration”部分。

  • 没有标签