# MQTT
MQTT staat voor Message Queuing Telemetry Transport. Het is een internet protocol opgericht door het bedrijf OASIS (Organization for the Advancement of Structured Information Standards), een non-profit organisatie die vooral bezig is met het ontwerpen van open standaarden omtrent heel veel zaken zoals Internet of Things, energie, beveiligingen, …
# Begrip
Het is een ‘machine-to-machine’ (M2M) connection-oriented protocol. Dit is ontworpen als een lightweight messaging transportsysteem voor kleine sensoren en mobiele apparaten. Een connection-oriented protocol is een type netwerkprotocol waarbij het noodzakelijk is dat er tussen de zender en de ontvanger een verbinding opgebouwd is, alvorens er gegevens verzonden kunnen worden. Deze verbinding blijft gedurende de complete gegevensoverdracht intact.
De MQTT is een systeem waarmee gebruikers makkelijk commando’s kunnen schrijven en berichten kunnen ontvangen door middel van een client. Het is ontworpen voor toestellen met een lage “bandwidth”. De bandwidth van een toestel slaat op de maximum data overdrachtsnelheid van een internetverbinding of op hoeveel gegevens er door een specifieke verbinding kan stromen. Doordat het bedoeld is voor toestellen met een lage bandwidth is het de ideale oplossing voor een applicatie van Internet of Things.
MQTT is geschikt voor toestellen die te maken hebben met Internet of Things. Dit doordat het geschikt is voor toestellen met een lage bandwidth. Het is dus zeker bruikbaar voor toestellen binnenshuis maar ook evengoed voor toestellen in de industrie. Je kunt er bijvoorbeeld makkelijk een output controleren (bijvoorbeeld: een lamp) doormiddel van een commando.
Het hoofddoel van dit protocol is om toestellen dichter bij elkaar te brengen en meer automatisering mogelijk te maken zodat het gemakkelijker wordt voor de eindgebruiker. Denk maar aan de slimme thermostaten, koelkasten, …
Stel je wilt de temperatuur weten in jouw eigen slimme ijskast. Dit kan door een commando te versturen naar een broker of ontvanger van commando’s, die dat op zijn beurt verwerkt en laat uitvoeren. Dan stuurt die broker het gewenste resultaat terug door naar de eindgebruiker.
# Werking
De MQ-Broker geeft toegang aan de clients (sensors of collectors) om korte signalen te sturen naar de broker. Deze toegang loopt via een TCP (Transmisson Control Protocol). De sensoren zijn geabonneerd op verschillende onderwerpen (topic). Wanneer één client een onderwerp (topic) update, zullen de geabonneerde clients deze informatie opnemen. De clients hoeven de IP-adressen en technische details van de andere apparaten niet te weten. Het is de taak van de broker om berichten te accepteren en aan de juiste client door te geven.
# Verbinding met de broker
Wanneer een client wil communiceren via MQTT, moet er eerst een verbinding gemaakt worden met de Broker. Het MQTT-protocol is TCP port 1883 voor onversleutelde en TCP port 8883 voor versleutelde communicatie. MQTT is een statusbehoudend protocol. Een verbinding blijft bestaan ook wanneer er geen gegevens worden verzonden.
De communicatie tussen verschillende toestellen gebeurd via Messages. Deze messages gaan van het ene toestel naar het andere en bevat allerlei informatie zoals commando’s of gegevens. Die gegevens kan het toestel dan lezen van bijvoorbeeld een sensor en deze data op zijn beurt weer publiceren of terugsturen naar de eindgebruiker.
# Publish / Subscribe Model
Elk bericht bevat een topic en een inhoud. Het topic lijkt qua opbouw op een Unix-bestand. De info wordt gescheiden door een ‘/’. Een voorbeeld van een netwerk op school zou kunnen zijn: school/rooms/A21/sensors/tmp met de waarde 22. Dit is wat wordt doorgegeven aan de broker. Op deze manier ontvangt de broker de informatie van de clients.
Een client die informatie wil ontvangen moet zich eerst abonneren (subscribe) op het topic. Voor het opvangen van waarden wordt ‘#’ op het einde van het path geplaatst: School/rooms/A21/sensors/#.
De broker slaat de abonnementen op en geeft de binnenkomende topics onmiddellijk door aan alle geabonneerde clients. Op deze manier ontvangen de clients de informatie van de broker.
Dit model is ideaal wanneer:
- Communicatie via TCP verloopt
- Fout tolerantie belangrijk is. Beschikbaar via QoS
- One-to-Many communicatie nodig is
# QoS
Elke verbinding met de broker geeft een Quality of Service waarde. Deze zijn geclassificeerd volgens hun volgorde:
- At most once
Het bericht wordt één keer verzonden en de broker en de client nemen geen extra stappen om de ontvangst te bevestigen. (fire and forget) - At least once
Het bericht wordt opnieuw gestuurd door de broker totdat er bevestiging van aankomst wordt teruggestuurd. (acknowledged delivery) - Exactly once
De communiceerden clients sturen beide een bevesteging naar de broker van de ontvangst. Om zeker te zijn dat het bericht maar één keer is ontvangen. (assured delivery)
# Voordelen
- Gemakkelijk om te implementeren in software want het heeft een heel snele data overdracht.
- Het gebruikt weinig netwerk doordat het weinig gegevens doorstuurt.
- Het is energiezuinig waardoor de batterij van het toestel langer meegaat.
- Het is sneller dan het HTTP protocol omdat het kleinere data paketten moet doorsturen.
- Het is real-time.
- …
# Toepassingen
Het MQTT protocol wordt al veel gebruikt in allerlei Internet of Things toestellen. Het is de bedoeling dat dit alsmaar meer en meer wordt gebruikt in de toekomst. De mogelijkheden met het protocol zijn eindeloos, zo kun je bijvoorbeeld een slimme thermostaat notificaties laten sturen naar uw gsm als hij te laag staat of er een error is.
Een aantal voorbeelden van waar het MQTT protocol wordt gebruikt:
- Freight Farm (opens new window)
- IP pinger swarm (opens new window)
- Owntracks location tracking (opens new window)
- Facebook Messenger
# Bronvermelding
- IoT Onderzoeksrapport van
(aangevuld) - Santos, R. (2017) What is MQTT and How It Works. 31.03.2020, randomnerdtutorials (opens new window)
- MQTT. (03.06.2013) 31.03.2020, Wikipedia: (opens new window)
- OASIS (organization). (20.07.2006) 31.03.2020, Wikipedia: (opens new window)
- AMR. (04.07.2018) mqtt-protocol. 31.03.2020, 1sheeld (opens new window)
- Cope, S. (2016) Beginners Guide To The MQTT Protocol. 31.03.2020, steves-internet-guide: (opens new window)