MikroTik使用MQTT上报数据

iot软件包从RouterOS 6.48.3开始使用,iot软件包需要单独添加,安装过程略过。

添加MQTT服务器服务器

命令行添加MQTT服务器

/iot mqtt brokers
add address=broker-cn.emqx.io name=broker-cn.emqx.io

MQTT服务器推荐使用https://www.emqx.com/简单易用

测试MQTT

MQTT客户端
Windows MQTTX 客户端: Download
macOS MQTT X客户端:Download
在线客户端免安装(存在安全分析):Online Client

新建MQTT服务器,这里我们使用免费的测试服务器。

broker-cn.emqx.io
端口1883

创建服务器

添加订阅

提交MQTT数据

查看数据

数据上报脚本,上报的数据格式为json。

:global cpul [/system resource get cpu-load]
:global memt [/system resource get total-memory]
:global memf [/system resource get free-memory]
:global diskt [/system resource get total-hdd-space]
:global diskf [/system resource get free-hdd-space]
:global uptime [/system resource get uptime]
:global Wan  [/ip address get [/ip address find interface=Wan] address];:set Wan  [:pick $Wan 0 ([len $Wan] -3)]
:global Lan  [/ip address get [/ip address find interface=Lan] address];:set Lan  [:pick $Lan 0 ([len $Lan] -3)]
:global DDNS [ip cloud get dns-name]
:global PublicIP [ip cloud get public-address]
:global sysver [/system resource get version]
:global sysid [/sys identity get name]
:global boardsn
:if (!([/system resource get architecture-name] ~"x86")) do={
:do {:set boardsn [/system routerboard get serial-number]}  on-error={:set boardsn "unknow"}
} else={
:set boardsn "unknow"
}
:if ($board ~"^CHR") do={:set boardsn [/system license get system-id]}
/iot mqtt publish broker=broker-cn.emqx.io topic="MT/Test" message="{\"Uptime\":\"$uptime\",\"PublicIP\":\"$PublicIP\",\"WanIP\":\"$Wan\",\"LanIP\":\"$Lan\"
,\"DDNS\":\"$DDNS\",\"Version\": \"$sysver\",\"Hostname\": \"$sysid\",\"SN\":\"$boardsn\",\"CPU_Load\": \"$cpul\",\"Memory\": \"$memt\",\"Memory_Free\": \"$memf\",\"Disk\": \"$diskt\",\"Disk_Free\": \"$diskf\"}"

创建定时上报任务

上报效果

官方文档:https://help.mikrotik.com/docs/display/ROS/MQTT

发表回复