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
Marketing Grand Theft Auto 6-release deze zomer van start
© Rockstar Games
Huis

Marketing Grand Theft Auto 6-release deze zomer van start

Take-Two Interactive en ontwikkelaar Rockstar beginnen aankomende zomer met de marketing rondom de Grand Theft Auto 6-release. De releasedatum staat nog steeds gepland op 19 november van dit jaar.

Dat liet Take-Two weten bij het bekendmaken van diens fiscale kwartaalcijfers. Aldus de uitgever in een persbericht: "Dit fiscale jaar is uitzonderlijk voor ons en we zijn enorm zeker van onze zaak voor het aankomende fiscale jaar. Die gaat revolutionair voor Take-Two en de gehele entertainmentindustrie worden, geleid door de release van Grand Theft Auto 6. Rockstars marketing rondom de release gaat deze zomer van start."

Take-Two bevestigde wederom dat het langverwachte GTA 6 op 19 november moet uitkomen. Het bedrijf heeft al vaker releasedata voor de game beloofd om het later alsnog uit te stellen. Dat het nu meldt dat de marketing rondom de release van het spel aankomende zomer begint, geeft wel een gevoel van meer zekerheid over de mogelijkheid dat de huidige releasedatum wordt gehaald.

Fysieke release niet uitgesteld

Onlangs gingen er geruchten dat alleen de fysieke release van Grand Theft Auto 6 misschien zou worden uitgesteld. Het idee zou zijn dat de digitale release gewoon op 19 november zou verschijnen, maar de fysieke release in de winkels pas later verschijnt om zo leaks te voorkomen. Aan Variety liet Take-Two-ceo Strauss Zelnick weten dat dit echter "niet het plan is". Daarmee lijkt dit gerucht dus ontkracht.

Watch on YouTube

Switch 2-versie van Borderlands 4

Take-Two geeft ook het populaire spel Borderlands 4 uit. Die game verscheen vorig jaar al op meerdere consoles, maar een Switch 2-versie werd uitgesteld. Tijdens de bekendmaking van de kwartaalcijfers vandaag bleek dat de game geheel uit het releaseschema van de uitgever is gehaald.

"We hebben de moeilijke beslissing gemaakt om de ontwikkeling (van de Switch 2-versie) te pauzeren", zo werd wederom aan Variety gemeld. "We blijven ons richten op het leveren van kwaliteitscontent voor de game en blijven het optimaliseren. We blijven ook nauw samenwerken met onze vrienden bij Nintendo. Zo komen PGA Tour 2K25 en WWE 2K26 voor de Switch 2 uit, en we willen graag meer van onze spellen naar het systeem brengen." Het is niet bekend wanneer en of Borderlands 4 nog uitkomt voor de Switch 2.

Over Grand Theft Auto 6

Grand Theft Auto 6 komt op 19 november uit voor PlayStation 5 en Xbox Series X en S. Het spel draait om twee hoofdpersonages: Lucia Caminos en Jason Duval. Het duo heeft een relatie, en duidelijk is in ieder geval dat Lucia vrijkomt uit de gevangenis en het tweetal vervolgens nog verder het criminele pad op gaat.

De game speelt zich af in Vice City, een fictieve versie van Miami, en omstreken. Dat betekent dat spelers glooiende stranden en met neon verlichte straten kunnen verwachten. Het was ook al de setting van de PlayStation 2-game Grand Theft Auto: Vice City, dat na GTA 3 uitkomt. Naar verwachting zal Grand Theft Auto 6 een ongekende hoeveelheid details vertonen. Lees hier alles over de game.

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
Accupaniek: met deze aanpassingen haal je wél het einde van de dag
© Yuliia
Huis

Accupaniek: met deze aanpassingen haal je wél het einde van de dag

Je laptopaccu lijkt altijd leeg te zijn op het moment dat er nergens een stopcontact te bekennen is. Met de juiste software-instellingen pers je echter makkelijk een uur extra uit je apparaat, zonder dat je daarvoor technisch onderlegd hoeft te zijn. Wij leggen uit aan welke knoppen je precies moet draaien voor maximaal resultaat.

Er is weinig irritanter dan een laptop die in de spaarstand schiet of uitvalt terwijl je in de trein net de laatste hand legt aan een belangrijk document. Veel gebruikers denken bij een snel leeglopende batterij direct dat de hardware versleten is en kijken alweer naar een nieuwe laptop. Vaak is de accu zelf echter nog prima in orde, maar gaat het besturingssysteem slordig om met de beschikbare energie. Fabrieksinstellingen zijn namelijk vaak gericht op maximale prestaties en helderheid, niet op uithoudingsvermogen. In dit artikel leer je hoe je de regie terugpakt en de energievreters in toom houdt, zodat je met een gerust hart de dag doorkomt.

Waar die energie eigenlijk naartoe lekt

Om te begrijpen hoe je accucapaciteit bespaart, moet je eerst weten waar de energie aan opgaat. De twee grootste verbruikers in een laptop zijn vrijwel altijd het beeldscherm en de processor. Het scherm vreet stroom om pixels te verlichten; hoe feller het scherm, hoe sneller de teller tikt. Daarnaast speelt de verversingssnelheid een rol. Veel moderne schermen verversen het beeld 120 keer per seconde (120 Hz). Dat kijkt heel rustig, maar kost aanzienlijk meer rekenkracht dan de standaard 60 Hz.

Onder de motorkap is de processor continu bezig met het verwerken van taken. Een veelvoorkomende misvatting is dat je handmatig alle programma's moet afsluiten om stroom te besparen. Dat is maar ten dele waar, want moderne systemen zijn heel goed in het bevriezen van apps die je niet gebruikt. Wat wél energie kost, zijn achtergrondprocessen die actief blijven synchroniseren, zoals cloudopslagdiensten of mailprogramma's die elke minuut checken op nieuwe berichten. Ook randapparatuur die stroom trekt via de usb-poort, zelfs als je deze niet actief gebruikt, snoept procenten van je lading af.

Besparen tijdens eenvoudige taken

De energiebesparende modus is je beste vriend wanneer je taken uitvoert die weinig rekenkracht vereisen. Denk hierbij aan tekstverwerken, e-mailen, webbrowsen of het invullen van spreadsheets. In deze scenario's heb je de volledige kracht van je processor en videokaart simpelweg niet nodig. Door in Windows of macOS te kiezen voor de energiebesparende modus, klokt de processor zichzelf terug. Hij werkt dan letterlijk iets langzamer, maar voor administratieve taken merk je daar in de praktijk niets van. De letters verschijnen nog steeds direct op je scherm zodra je ze typt.

Daarnaast is dit het moment om eens kritisch naar je schermhelderheid te kijken. Binnenshuis is een helderheid van 50 tot 60 procent vaak meer dan voldoende om comfortabel te kunnen werken. Werk je vooral 's avonds? Dan kan het zelfs nog lager. Ook het uitschakelen van toetsenbordverlichting levert in deze context pure winst op. Het zijn kleine percentages per uur, maar op een hele werkdag maakt dit het verschil tussen wel of niet de oplader moeten pakken.

©PXimport

Prestaties boven accuduur

Er zijn momenten waarop je de batterijbesparingsinstellingen beter uit kunt laten, of zelfs agressief moet vermijden. Zodra je aan de slag gaat met zware grafische taken, zoals videobewerking, 3D-rendering of serieuze gaming, werkt een besparingsmodus averechts. De software knijpt de toevoer van stroom naar de componenten af, wat resulteert in een haperend beeld, trage exporttijden en een frustrerende gebruikservaring.

In deze gevallen heeft de hardware ademruimte nodig om te kunnen presteren. Als je probeert te gamen op een besparingsstand, zal het systeem de prestaties van de grafische chip zo ver terugschroeven dat het spel onspeelbaar wordt. Bovendien duurt het renderen van een video in spaarstand veel langer, waardoor het scherm en de schijf langer actief moeten blijven, wat onderaan de streep soms zelfs méér energie kost dan een korte piekbelasting op vol vermogen. Hier geldt: efficiëntie door snelheid is soms zuiniger dan traagheid.

Situaties waarin instellingen het niet meer redden

Hoewel je met software veel kunt optimaliseren, zijn er harde grenzen waarbij geen enkele instelling je meer gaat redden. Je moet realistisch zijn over de fysieke staat van je apparaat.

Ten eerste is er de chemische degradatie. Als de maximale capaciteit van je accu (ook wel battery health geheten) onder de 70 procent is gezakt, kun je instellen wat je wilt, maar de rek is er fysiek uit. De batterijcellen kunnen de lading simpelweg niet meer vasthouden. Ten tweede is oververhitting een doodsteek voor je accuduur. Als de ventilatoren van je laptop continu staan te loeien omdat de koelkanalen vol stof zitten, kost dat enorm veel energie. Warmte is in feite verspilde energie. Tot slot helpt software niet als je zware externe apparaten zonder eigen voeding aansluit. Een externe harde schijf die zijn stroom via de laptop krijgt, trekt de accu leeg alsof het een rietje in een pakje sap is, ongeacht je schermhelderheid.

Creëer je eigen energieprofiel

Om echt grip te krijgen op je verbruik, moet je de instellingen afstemmen op jouw specifieke gedrag. Begin met de slaapstand-instellingen. Veel mensen laten hun laptop openstaan als ze even koffie gaan halen, waarbij het scherm zomaar tien minuten op volle sterkte blijft branden. Stel in dat het scherm al na twee of drie minuten inactiviteit uitgaat. Dat is de makkelijkste winst die je kunt boeken.

Kijk ook naar je randapparatuur. Gebruik je een externe monitor? Zorg dan dat je laptop zo is ingesteld dat het interne scherm volledig uitschakelt, en niet 'zwart maar aan' blijft staan. Gebruik je veel bluetooth-apparaten? Schakel bluetooth uit als je ze niet gebruikt; het constant scannen naar verbindingen kost stroom. Voor gebruikers met een oledscherm is er nog een extra truc: gebruik een donkere modus. Bij oledschermen verbruiken zwarte pixels namelijk helemaal geen energie, in tegenstelling tot traditionele lcd-schermen waar de achtergrondverlichting altijd aan staat.

Balans tussen snelheid en stopcontact

Het verlengen van je accuduur is uiteindelijk een balansspel tussen comfort en noodzaak. De grootste winst behaal je door de schermhelderheid te temperen en de slaapstand agressiever in te stellen, zodat je geen energie verspilt in de pauzes. Wees niet bang om de energiebesparingsmodus standaard aan te zetten voor alledaags werk; de moderne processors zijn krachtig genoeg om dat zonder haperingen op te vangen. Pas als je merkt dat je laptop traag reageert bij zwaardere taken, is het tijd om de teugels weer iets te laten vieren. Zo bepaal jij hoelang de werkdag duurt, en niet je batterij.