Last Updated or created 2022-04-06
Today Vincent mentioned a link about mqtt and mikrotiks, i knew about addons, but not mqtt .. lets try this.
When you want to use MQTT with Mikrotik you have to install the iot package from extra_packages.
- Download correct package zip from ( https://mikrotik.com/download )
- Download extra packages zip for your system
- Extract and use file upload
- Reboot your mikrotik
(i had to upgrade my firmware first, iot package was not build for my version)
Create a entry in IoT > Mqtt to your broker.
save below in a script ending with a .rsc extention, and upload in file manager
# Required packages: iot
################ Configuration #################
# Name of an existing MQTT broker that should be used for publishing, the one you just created
:local broker "10.1.0.17"
# MQTT topic where the message should be published
# i've got mine in a tree called mikrotik/switchtype/
:local topic "mikrotik/rb2011/topic"
############### System ###############
# You can create your own variables below
:put ("[*] Gathering system info...")
:local cpuLoad [/system resource get cpu-load]
:local freeMemory [/system resource get free-memory]
:local usedMemory ([/system resource get total-memory] - $freeMemory)
:local rosVersion [/system package get value-name=version \
[/system package find where name ~ "^routeros"]]
:local model [/system routerboard get value-name=model]
:local serialNumber [/system routerboard get value-name=serial-number]
:local upTime [/system resource get uptime]
################## MQTT ###################
# create a message
:local message \
"{\"model\":\"$model\",\
\"sn\":\"$serialNumber\",\
\"ros\":\"$rosVersion\",\
\"cpu\":$cpuLoad,\
\"umem\":$usedMemory,\
\"fmem\":$freeMemory,\
\"uptime\":\"$upTime\"}"
:log info "$message";
:put ("[*] Total message size: $[:len $message] bytes")
:put ("[*] Sending message to MQTT broker...")
/iot mqtt publish broker=$broker topic=$topic message=$message
:put ("[*] Done")
Import script using
import mikrotikmqtt.rsc
Todo’s:
Import is just @ import time, need to “cron” this?