Mosquitto¶
Voorkennis
- shell-opdrachten
- installeren van software op Linux/Raspberry Pi
Mosquitto (https://mosquitto.org) is een open source MQTT-broker. We beschrijven hier het installeren en configureren van Mosquitto op een Rasberry Pi of op een Linux-server “in the cloud”.
Mosquitto ondersteunt naast het MQTT-protocol ook de volgende mogelijkheden:
- gebruik van MQTT via websockets. Dit gebruiken we voor MQTTT: dit is een web-toepasssing die via websockets communiceert met een MQTT-broker.
- statische HTTP-server. Via het HTTP-protocol kan Mosquitto het document (web-toepassing) bij een URL opleveren. Dit gebruiken we voor MQTTT en voor de IoT-knoop simulator: dat zijn statische web-toepassingen die geen verdere server-acties vereisen.
Installeren¶
We geven hier de aanwijzingen voor Debian Stretch (ook van toepassing op de Raspberry Pi). Mosquitto is voor deze distributie een standaard-pakket, je installeert dit met:
$ sudo apt-get update
$ sudo apt-get install mosquitto mosquitto-clients
Als je zeker wilt zijn van de nieuwste versie van mosquitto, dan kun je de aanwijzingen gebruiken van https://theembeddedlab.com/tutorials/install-mosquitto-on-a-raspberry-pi/
Mosquitto-server¶
In de meeste gevallen gebruik je mosquitto als een “service” (ook wel daemon genoemd): dit betekent dat de mosquitto-broker opgestart wordt bij het opstarten van het systeem. De normale Debian-installatie installeert de mosquitto-broker als service.
Met de volgende opdrachten kun je de broker starten, stoppen of herstarten.
$ sudo service mosquitto start
$ sudo service mosquitto stop
$ sudo service mosquitto restart
Testen¶
Je kunt testen of de broker werkt, via de client-opdrachten mosquitto_pub
en mosquitto_sub
:
Open een nieuw shell-venster, en geef daarin de opdracht:
$ mosquitto_sub -t "mytopic"
Deze opdracht blijft actief totdat je deze afbreekt (met ^C).
Geef in een ander shell-venster de opdracht:
$ mosquitto_pub -t "mytopic" -m "Hello World"
Je ziet nu dit bericht verschijnen in het mosquitto_sub
shell-venster.
Configureren¶
De mosquitto-configuratie is beschreven in het bestand mosquitto.conf
.
Je vind dit bestand waarschijnlijk in /etc/mosquitto
of /usr/local/etc/mosquitto
.
De handleiding: https://mosquitto.org/man/mosquitto-conf-5.html geeft een beschrijving van de configuratie-parameters.
We gebruiken hier een eenvoudige configuratie, met twee soorten listeners en een eenvoudige username/password-authenticatie.
Als je de configuratie veranderd hebt moet je de mosquitto-service herstarten (zie hierboven).
Listeners¶
We gebruiken twee soorten listeners: clients via het MQTT-protocol (port 1883),
en clients via de HTTP/websockets protocollen (port 1884).
De username/password-combinaties zijn beschreven in de password-file /etc/mosquitto/passwd
.
Het wachtwoord wordt gecodereerd opgeslagen.
Je beheert deze password-file met behulp van mosquitto_passwd
(https://mosquitto.org/man/mosquitto_passwd-1.html).
listener 1883
allow_anonymous false
password_file /etc/mosquitto/passwd
listener 1884
protocol websockets
http_dir /var/mosquitto/http
Opmerking: voor een echte beveiliging is het nodig om ook beveiligde verbindingen te gebruiken.
MQTT-bridge¶
Je kunt een lokale MQTT-broker gebruiken als bridge naar een publieke MQTT-broker.
Te doen
- MQTT: beveiliging met TLS etc. verder uitwerken.
- MQTT broker als bridge naar een publieke broker
- MQTT performance-testing
- MQTT-paho in combinatie met mosquitto?
Links¶
- https://mosquitto.org
- https://mosquitto.org/download/
- RaspBian: Mosquitto is available through the main repository.
- https://mosquitto.org/blog/2013/01/mosquitto-debian-repository/
- https://mosquitto.org/man/mosquitto-conf-5.html
- https://www.cloudmqtt.com/docs-bridge.html
- https://www.cloudmqtt.com/