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
Google's Project Genie genereert 3D-gamewerelden met AI
Huis

Google's Project Genie genereert 3D-gamewerelden met AI

Google heeft een nieuwe versie van zijn AI-model Project Genie uitgebracht in de Verenigde Staten, waarmee spelers driedimensionale spelwerelden voor games kunnen genereren.

Project Genie is deze week uitgekomen voor AI Ultra-abonnees (dat 250 dollar per maand kost) in de Verenigde Staten. Hiervoor was Project Genie alleen nog maar voor een selecte groep te gebruiken. Het is niet bekend wanneer de tool in Nederland beschikbaar komt.

Zo werkt Project Genie

Project Genie combineert diverse AI-tools, zoals AI-chatprogramma Gemini en de videotool Nano Banana Pro, om complete, interactieve spelwerelden te creëren. Spelers bepalen eerst het perspectief dat het personage in de spelwereld gebruikt en de manier waarop men interactie kan hebben met de spelwereld. Vervolgens kan men in realtime de spelwereld verkennen en wordt meer van de wereld automatisch gegenereerd. Daarbij kan men het uiterlijk van personages of de spelwereld aanpassen door zelf foto's te uploaden, bijvoorbeeld van mensen die men kent.

De tool is nog niet in staat om complete games te creëren. Er zitten namelijk diverse limieten aan Project Genie. Zo kan er maar zestig seconden gegenereerd worden en is er een maximum van 24 frames per seconde en een resolutie van 720p. Dat is niet afdoende om projecten als serieuze concurrentie van games te laten bestaan. In die zin is het meer een 'proof of concept' en moet het tonen hoe de toekomst van game-ontwikkeling er in combinatie met het gebruik van AI uit kan zien.

Watch on YouTube

AI in combinatie met games

Generatieve AI wordt sowieso steeds vaker ingezet bij game-ontwikkeling, bijvoorbeeld bij het creëren van artwork, in-game assets of het creëren van stemmen. Steeds meer bedrijven zetten AI in bij de dagelijkse werkzaamheden die komen kijken bij game-ontwikkeling.

Dit zorgt echter ook voor veel controverse, omdat veel gamers hier principieel tegen zijn. Zij zien liever dat games geheel door mensen worden ontwikkeld. Daarbij is werk van AI in principe gebaseerd op werk van anderen, aangezien het daar van leert. Dat zorgt er voor dat veel gamers een afkeer hebben van het gebruik van AI bij game-ontwikkeling. Wanneer gamers ontdekken dat AI is ingezet bij het maken van games, worden deze spellen dan ook vaak hevig bekritiseerd, bijvoorbeeld via gebruikersrecensies op online gamewinkels.

Hieronder zijn enkele voorbeelden te zijn van beelden die met Project Genie zijn gecreëerd, waaronder projecten die wel erg op games van andere bedrijven lijken.

View post on X
View post on X
View post on X
View post on X
Nieuw op ID: het complete plaatje

Misschien valt het je op dat er vanaf nu ook berichten over games, films en series op onze site verschijnen. Dat is een bewuste stap. Wij geloven dat technologie niet stopt bij hardware; het gaat uiteindelijk om wat je ermee beleeft. Daarom combineren we onze expertise in tech nu met het laatste nieuws over entertainment. Dat doen we met de gezichten die mensen kennen van Power Unlimited, dé experts op het gebied van gaming en streaming. Zo helpen we je niet alleen aan de beste tv, smartphone of laptop, maar vertellen we je ook direct wat je erop moet kijken of spelen. Je vindt hier dus voortaan de ideale mix van hardware én content.

▼ Volgende artikel
De Samsung Galaxy S26 wordt op 25 februari onthuld
© Samsung
Huis

De Samsung Galaxy S26 wordt op 25 februari onthuld

Het is zo goed als zeker dat Samsung hun Galaxy S26-serie op 25 februari aankondigt.

Insider Even Blass deelde op social media namelijk de uitnodiging voor het aankomende Galaxy Unpacked-evenement. Daaruit blijkt dat eerdere geruchten kloppen, en dat het evenement op 25 februari wordt gehouden.

Het was al bekend dat daar de nieuwe Galaxy S26-serie onthuld zou worden, dus nu weten fans van de smartphones van Samsung dat ze 25 februari in hun agenda moeten omcirkelen. Gezien de weergave van Galaxy AI-illustraties op de uitnodiging zal AI ook een grote rol spelen op het evenement. Hoe dan ook zal het grootste nieuws waarschijnlijk de opvolger van de Samsung Galaxy S25-serie zijn.

View post on X

Over de Samsung Galaxy S26-toestellen

Samsung brengt dit jaar naar verwachting de Galaxy S26, S26+ en S26 Ultra. Eind vorig jaar lekten er al foto's van dummyversies van de smartphones op social media, waaruit blijkt dat deze modellen waarschijnlijk een ovaalvormig camera-eiland krijgen, vergelijkbaar met de Galaxy Z Fold-smartphones.

Qua kleuren zouden de nieuwe Galaxy-modellen in Black Shadow, White Shadow, Galactic Blue en Ultraviolet beschikbaar komen. Een grote focus zou ook liggen op de toevoeging van een privacyscherm - een optie zodat het moeilijker wordt voor omstanders om je het scherm van je smartphone te kijken.

View post on X
Nieuw op ID: het complete plaatje

Misschien valt het je op dat er vanaf nu ook berichten over games, films en series op onze site verschijnen. Dat is een bewuste stap. Wij geloven dat technologie niet stopt bij hardware; het gaat uiteindelijk om wat je ermee beleeft. Daarom combineren we onze expertise in tech nu met het laatste nieuws over entertainment. Dat doen we met de gezichten die mensen kennen van Power Unlimited, dé experts op het gebied van gaming en streaming. Zo helpen we je niet alleen aan de beste tv, smartphone of laptop, maar vertellen we je ook direct wat je erop moet kijken of spelen. Je vindt hier dus voortaan de ideale mix van hardware én content.