ID.nl logo
Zekerheid & gemak

Alles over het internet-of-things-protocol MQTT

De naam MQTT zal niet bij veel mensen een belletje doen rinkelen, maar het internet-of-things-protocol vormt de basis van talloze systemen in domotica. We kijken naar de werking van dit protocol en de verschillende manieren waarop je het kunt inzetten.

Het internet der dingen (internet of things, IoT) is de laatste jaren een hype, maar de meest gebruikte technologie om al die apparaten met elkaar te laten praten bestaat al twintig jaar: MQTT (Message Queuing Telemetry Transport). De eerste versie van het MQTT-protocol werd namelijk al in 1999 geschreven door Andy Stanford-Clark van IBM en Arlen Nipper van Arcom (later Eurotech).

Hun bedoeling was om een licht protocol te ontwikkelen dat met een efficiënt gebruik van bandbreedte allerlei soorten gegevens kon doorsturen met verschillende vormen van quality of service (QoS). En laat dat nu net een combinatie van eigenschappen zijn die essentieel is in het internet of things. Het mag dan ook niet verbazen dat talloze IoT-projecten ervoor gekozen hebben om onder de motorkap MQTT te gebruiken. Overigens toonde MQTT-uitvinder Stanford-Clark in 2009 de mogelijkheden al door zijn domoticasysteem via MQTT met Twitter te verbinden.

Centrale tussenpartij

Een cruciale rol in MQTT is weggelegd de ‘broker’, een centrale tussenpartij die de communicatie tussen zenders en ontvangers in goede banen leidt. In traditioneler taalgebruik zouden we het de server noemen. De broker is niet de enige afwijkende term die het MQTT-protocol gebruikt: een zender heet er uitgever (‘publisher’) en een ontvanger abonnee (‘subscriber’). Beide zijn vormen van clients. Uiteraard kan een client ook zowel zenden als ontvangen.

De broker zorgt ervoor dat uitgevers en abonnees niet van elkaars bestaan hoeven te weten: alles verloopt via de broker. Dat gaat als volgt: de broker beheert onderwerpen (‘topics’) met inhoud (‘payloads’). Een abonnee die in een onderwerp geïnteresseerd is, abonneert zich daarop bij de broker. Een uitgever die een boodschap wil sturen, publiceert zijn inhoud op een specifiek onderwerp door dit naar de broker te sturen. Zodra de broker een boodschap voor een onderwerp ontvangt, stuurt hij die door naar alle clients die op dit onderwerp geabonneerd zijn.

Hiërarchische onderwerpen

Een onderwerp kunnen we dus beschouwen als een soort locatie waarvan de naam bij uitgever en abonnee bekend is. Maar om hier wat systematiek in te brengen, definieert MQTT de onderwerpen als hiërarchische namen, gescheiden door een slash (/), zoals in url’s. Elke toepassing is voor de rest volledig vrij in de keuze van de namen; in tegenstelling tot url’s zijn er dus geen vastgelegde topdomeinen.

Wil je wat orde in je MQTT-netwerk houden, dan is het aan te raden om een systeem voor je onderwerpen te gebruiken. Een domoticatoepassing als Home Assistant doet dat door de onderwerpen van de volgende vorm te maken:

<discovery_prefix>/<component>/[<node_id>/]<object_id>/&lt;&gt;</object_id></node_id></component></discovery_prefix>

Daarbij is discovery_prefix standaard gelijk aan homeassistant. Component het type component, zoals binary_sensor enzovoort. Een voorbeeld van een onderwerp is:

homeassistant/sensor/slaapkamer_temperature/state

Dat bevat als inhoud de temperatuur van een temperatuursensor in de slaapkamer, bijvoorbeeld 18.7.

Wildcards

MQTT kent ook ‘wildcards’ voor onderwerpen. Een client die in alle onderwerpen onder homeassistant/sensor/slaapkamer_temperature geïnteresseerd is, abonneert zich dan op:

homeassistant/sensor/slaapkamer_temperature/#

Hij krijgt dan ook boodschappen over de onderwerpen:

homeassistant/sensor/slaapkamer_temperature/last_updated
homeassistant/sensor/slaapkamer_temperature/last_changed

Enzovoort.En als een client in alle onderwerpen van Home Assistant geïnteresseerd is, abonneert hij zich op:

homeassistant/#

Soms ben je geïnteresseerd in alle onderwerpen met een specifieke naam van het onderste niveau, ongeacht het niveau erboven. Daarvoor gebruik je de wildcard +. Zo abonneer je je bijvoorbeeld eenvoudig op de boodschappen over de laatste veranderingen van alle sensoren in Home Assistant:

homeassistant/sensor/+/last_changed

De hiërarchische opbouw van onderwerpen maakt dit heel eenvoudig.

©PXimport

Verbinding en beveiliging

MQTT is ontworpen om over tcp/ip te draaien, meestal op poort 1883. Recentelijk is ook MQTT over WebSocket populair, omdat dit het mogelijk maakt om rechtstreeks in een webbrowser via MQTT te communiceren. Een JavaScript-client pakt de pakketten dan uit de WebSocket-laag uit en behandelt de MQTT-pakketten die erin zitten. MQTT over WebSocket verloopt meestal via poort 9001. Zowel MQTT over tcp/ip als MQTT over WebSocket zijn ook te gebruiken over een versleutelde verbinding, via tls.

Tot nu toe lijkt het alsof iedereen zomaar alle onderwerpen op je MQTT-broker kan uitlezen, en zo gebeurt het in veel lokale MQTT-installaties ook, maar de meeste MQTT-brokers bieden een gebruikersbeheer met bijbehorende authenticatie en gebruikersrechten. Je stelt dan in de configuratie van de broker in dat elke MQTT-client zich moet aanmelden met een gebruikersnaam en wachtwoord en lees- en schrijfrechten voor specifieke onderwerpen heeft. Zo voorkom je dat een willekeurige sensornode in je netwerk waarin iemand is ingebroken je hele domoticasysteem via MQTT kan aansturen.

Zelf aan de slag met MQTT

MQTT is in heel wat software ondersteund, dus je kunt het protocol zelf eenvoudig in je eigen projecten inzetten. Een eenvoudige manier om een Raspberry Pi, Arduino of ESP8266 via MQTT over internet te laten werken, is via de clouddienst Adafruit IO. Werk je liever in het ecosysteem van Amazon of Microsoft, gebruik dan AWS IoT respectievelijk Azure IoT Hub.

Je hoeft MQTT trouwens niet in de cloud te gebruiken: met het opensourceproject Eclipse Mosquitto, dat MQTT-protocols 3.1 en 3.1.1 ondersteunt, draai je eenvoudig een MQTT-broker op je eigen netwerk. Mosquitto komt ook met eenvoudige MQTT-clients voor op de opdrachtregel: mosquitto_pub en mosquitto_sub.

Wil je op een grafische manier MQTT-boodschappen doorzoeken, bekijken en publiceren, dan is MQTT Explorer een handig programma.

Wil je MQTT in je eigen programma’s gebruiken, dan is het project Eclipse Paho met bibliotheken in C, C++, Java, JavaScript, Python en Lua onmisbaar.

▼ Volgende artikel
The Elder Scrolls 6 draait op Creation Engine 3
Huis

The Elder Scrolls 6 draait op Creation Engine 3

Het langverwachte The Elder Scrolls 6 draait op de Creation Engine 3, zo heeft Bethesda bevestigd.

Dat liet Bethesda's topman Todd Howard weten in een interview met de Kinda Funny Gamescast. Daarin vertelde hij iets meer over wat spelers van The Elder Scrolls 6 kunnen verwachten, waaronder de engine waarop de game draait.

Het enkele jaren geleden uitgekomen Starfield draaide op de Creation Engine 2, een game-engine die door Bethesda zelf is gemaakt. Nu is dus duidelijk dat Bethesda de Creation Engine 3 heeft gemaakt. "Daar gaan The Elder Scrolls 6 en de games daarna op draaien."

Howard vervolgt: "We hebben een gamestijl waar we heel tevreden mee zijn, en die mensen van ons verwachten. Er valt nog veel te innoveren, zodat wanneer je in een spelwereld stapt, het voelt alsof je het echt voor de eerste keer meemaakt. Ik denk dat we blij zijn met de richting waarin we opgaan. Dat is wat ik kan zeggen."

Watch on YouTube

Wachten op The Elder Scrolls 6

The Elder Scrolls 6 werd in 2018 aangekondigd met een korte teaser, maar sindsdien is er geen concrete informatie over de game gegeven - behalve dan dat het spel nog geruime tijd op zich laat wachten.

Howard gaf in het nieuwe interview zelf ook aan dat de game te vroeg is aangekondigd. Als het aan hem ligt, worden games zelfs niet aangekondigd en komen ze zomaar opeens uit. Ondanks dat zal Bethesda binnenkort een belangrijke mijlpaal tijdens de ontwikkeling behalen, dus het lijkt er op dat de ontwikkeling voorspoedig loopt.

Over The Elder Scrolls

In de The Elder Scrolls-games verkennen spelers een fantasievolle wereld. Men maakt zelf een personage aan en gaat op avontuur, waarbij men buiten het hoofdverhaal zelf op zoek gaat naar allerlei zijmissies. De games staan er om bekend dat spelers in principe hun eigen avontuur creëren, en dat men min of meer alles kan doen - waaronder het doden van belangrijke personages.

Watch on YouTube

Het vorige deel in de reeks, The Elder Scrolls 5: Skyrim, verscheen in 2011. Dat betekent dus dat het al vijftien jaar geleden is dat er een nieuw deel in de franchise uit is gekomen. Skyrim bleek een groot succes en is op talloze consoles en pc uitgekomen. Vorig jaar is wel The Elder Scrolls 4: Oblivion Remastered uitgekomen op moderne consoles en pc.

En Starfield dan?

Tijdens het interview praatte Howard overigens ook over de toekomstplannen van het in 2023 uitgekomen Starfield, een soort 'The Elder Scrolls in de ruimte'. Er gaan al geruime tijd geruchten dat de game een forse update krijgt en dat het ook op PlayStation 5 uitkomt naast de Xbox- en pc-versies.

Howard liet tijdens het interview weten dat de update het spel niet verandert in 'Starfield 2.0', maar dat mensen die de game al tof vonden, de update ook gaan waarderen. Volgens Howard zal er binnenkort meer over bekendgemaakt worden.

▼ Volgende artikel
Google Pixel 10a-smartphone kost 549 euro
Huis

Google Pixel 10a-smartphone kost 549 euro

Google heeft de Pixel 10a volledig uit de doeken gedaan, een nieuwe smartphone voor de prijs van 549 euro.

De nieuwe smartphone werd eerder deze maand al getoond, maar nu zijn alle details bekendgemaakt. De Pixel 10a is nagenoeg gelijk aan de Pixel 9a, al wordt hij sneller draadloos opgeladen en is hij ook iets kleiner. Dat laatste komt door de dunnere schermbezels, want het formaat van het scherm blijft wel 6,3".

Het scherm zal ook iets feller worden, met een maximale helderheid van 3000cd/m², ten opzichte van de Pixel 9a die een maximale helderheid van 2700cd/m² aan. De Pixel 10a wordt daarnaast beschermd door Gorilla Glass 7i.

View post on X

Zoals gezegd kan de Pixel 10a sneller draadloos opladen met een maximaal vermogen van 10W (in plaats van 7,5W). De accucapaciteit blijft met 5100mAh gelijk. Verder draait de Pixel 10a op Android 16.

De Pixel 10a oogt verder nagenoeg hetzelfde als de Pixel 9a. Het frame is daarbij gemaakt van 100 procent gerecycled aluminium, 81 procent gerecycled plastic en gerecycled koper, goud, kobalt en wolfraam.

De Pixel 10a is vanaf 5 maart beschikbaar, al kan hij nu al gereserveerd worden. Zoals gezegd luidt de adviesprijs 549 euro - althans, voor de variant met 128 GB aan opslagruimte. Er is ook een model met 256 GB die 649 euro kost. Meer informatie is op de website van Google te vinden.