Summary
This is a very short introduction to setup MQTT using Mosquitto, on a Raspberry Pi. We have a more detailed manual found here: MQTT on Raspberry Pi. The ambition of this document is to simplify the setup with ready made components and quickly build up an IoT Raspberry Pi Device (this guide however works stand-alone as well).
Mosquitto Installation
- Mosquitto is an MQTT Broker listening to publisher events. Consequently, events are gathered in topic trees and served to Subscribers.
Installing core components
- SSH into the server gateway
- Install the broker
sudo apt install mosquitto
- Install the clients for mosquitto
sudo apt install mosquitto-clients
Testing Functionality
Open another (second) SSH session: those will be called SSH1 / SSH2 respectively. SSH1 will be used as subscriber, SSH2 as publisher
- [SSH1]: set subscriber to listen to topic test/topic1
mosquitto_sub -d -t test/topic1
- [SSH2]: send publisher message to the same topic test/topic1
mosquitto_pub -d -t test/topic1 -m "message sent"
- Validate the message is received in [SSH1]
For some more testing, you might want to send content to several topics. If you want to subscribe to several topics at once (in your [SSH1] terminal session), you can use MQTT wildcards. There are basically only two: # and +. You can learn more in MQTT documentation, but basically you either subscribe to all subtopics with #, or substitute a topic tree with +.
Assuming we publish on the following topics:
a/b/c/d
a/b/c/e
a/x/c/d
a/x/c/e
The subscription below selects all topics
mosquitto_sub -d -t a/#
The subscription below
mosquitto_sub -d -t a/b/#
selects these topics
a/b/c/d
a/b/c/e
And the subscription
mosquitto_sub -d -t a/+/c/d
selects these topics
a/b/c/d
a/x/c/d
Notes
-
Only the server component needs to install the mosquitto broker. Clients only need the clients component
-
For many projects, please also install paho MQTT components. They are typically used for their Python libraries, from within code. You need PIP for this, so the instructions below setup both.
sudo apt install python-pip
sudo pip install paho-mqtt
If you wish to run the paho components on Python3 (recommended), use the following instead:
sudo apt install python3-pip
sudo pip3 install paho-mqtt
- Since Mosquitto version 2.0, your broker will not allow connections from remote IPs. This change was introduced for security reasons. For testing purposes, we can quickly allow remote connections by editing
/etc/mosquitto/mosquitto.conf
and adding the below two lines. Please read the full docs for production environments, this configuration is not a good idea to run in production.
listener 1883
allow_anonymous true
Btw. If you wish to quickly restart Mosquitto after applying the changes, type the following:
sudo systemctl restart mosquitto
Links
- Mosquitto Home
- MQTT Topic Trees - a description of an MQTT topic structure our solutions use