MQTT client in routerOS

MQTT functionality in routerOS to enable IoT like operation

  • yes
  • yes, with the ability to have multiple instances that subscribe different brokers/topics
  • no, i use scripting and/or blood magic to mimic the functionality
  • no, i got everything sorted out with API
  • no, i don’t need anything like this
0 voters

I created an environment in routerOS, that enables IoT-like (i.e. the server doesn’t talk to the router, but the router talks to the server) operation. it works in a reasonable way, but i’d think i’d be better of with a proper MQTT client implementation in the device, that enables subscribing and posting to topics:

  • performance data, state, logs, idk - so in general “a routerOS variable”
  • trigger a script / feed the input of an event that is sent to a subscribed topic

i might say, this shouldn’t be a big performance issue as teeny-tiny micros can accommodate one and live on, so i thought i might ask the scripting community whether it would spark some ideas/interest on someone else’s side, and create a demand so the next minor release of RouterOS (or maybe #RouterOS7) will suddenly include this functionality.
my explanation for it is that i don’t want to track devices, i might not will be able to talk to them (behind nat, behind firewall), but in many cases they could just talk to my server. this would also enable some sort of ZTP/ZTO environment as well.

imagine something like

/system script
add name=handler1 source=":log info message=\"received: $mqtt_input on $mqtt_topic\""
/mqtt brokers
add name=broker1 server=fqdn.of.the.broker port=6969
add name=broker2 server=this.is.another.broker port=1183
/mqtt topics
add name=topic1 broker=broker1 mode=publish topic=topicname
add name=topic2 broker=broker2 mode=subscriber topic=controller script=handler1

and you’ll be able to use a script to write a routerOS variable or just a string to a publish-mode topic:

/mqtt post topic="topic1" message=$myvar

MQTT support would be great. A definite requirement would be SSL/TLS connections for each broker.

As a Smart Home user and possibly enthusiast and a multiple Mikrtik user this would be very useful. IE the ability to interact with my MQTT server running elsewhere and subscribe to topics that are being used in our Smart Home. Mikrotik anybody … ?

+1 for this feature. Would love to be able to have Mikrotik devices subscribe to a central MQTT server over TLS/SSL to trigger scripts on topic updates. Perfect for doing lightweight automation and control and not need to poke any inbound holes through firewalls! We currently do this through some script magic but it only checks for updates once a day to keep traffic low…

+1 for MQTT client

+1

/tool fetch which supports TLS 1.2 and can provide CA, public and private key will work for me too.

+1 for MQTT client

+1 for MQTT :slight_smile:
would also be interesting as transport protocol for LoRaWAN

+1 for MQTT client

News about mqtt and mqtts?
Mikrotik could think develop a tool for iot and dedicating devices, exactly like years ago he started with the rb112 or rb532 when WiFi cards were only PCMCIA…

I do also have several Mikrotik units and more to come.
Also running MQTT servers and alot of “things” connected to openhab trough my WiFi.
Next on the list is LoRa for outdoor appliances, and if we get mqtt sub/pub on the unit, I can test several scenarios in my home.

Also HIGHLY supporting this request.

Would be a perfect companion!

+1 for MQTT client

+1 Publish/Subscribe with encryption feature will be great!!

@hawkn
Have you seen the wAP LR8 kit? Its a lora base station but I think it does not do MQTT. Sadly.
https://mikrotik.com/product/wap_lr8_kit

there’s now an IoT package available in 7b5.

[me@audience] > /system/package/print 
Columns: NAME, VERSION
  #  NAME       VERSION 
  0  iot        7.1beta5 <--
  1  routeros   7.1beta5
  2  wifiwave2  7.1beta5

and it is available on all platforms:

[me@audience] /iot/mqtt> 

.. -- go up to iot
brokers -- 
export -- Print or save an export script that can be used to restore configuration
get -- Gets value of item's property
print -- Print values of item properties
publish --

https://help.mikrotik.com/docs/pages/viewpage.action?pageId=41680915

Hi,
In version 7.1b5 there isn’t LORA package… How could test mqtt with lora ?
Ciao Carlo

The IoT package is in the “extra packages” for 7.1b5.

I hope this IoT package makes it’s way into the 6.48 series with the release of the KNOT. The MQTT and Modbus functions are quite useful!

Yes I know.

I hope there is the functionality to handle payload and then to use mqtt …
AES decrypting would be appreciated
Immagine.png

FYI, the iot package is now in “extra” packages of 6.48.3. From the change log:

*) package - added new “iot” package with Bluetooth (KNOT only) and MQTT publisher support;

For those that might be tripped up by this like I was, it seems that using the /iot mqtt publish command in scripts oddly requires the “test” permission.
Also, the toJson function from http://forum.mikrotik.com/t/fetch-http-data-how-to-send-properly-an-array/107696/1 combos with mqtt publish nicely.