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
Hoe vaak moet je een wasbaar dekbed wassen?
© ID.nl
Huis

Hoe vaak moet je een wasbaar dekbed wassen?

Een wasbaar dekbed klinkt ideaal: nooit meer worstelen met een overtrek, gewoon alles in één keer in de wasmachine. Maar hoe vaak moet dat eigenlijk gebeuren? Elke week, of is dat overdreven? Het antwoord hangt af van een aantal factoren. In dit artikel lees je er meer over.

Lees ook: Wasbaar dekbed: handig of juist niet?

Bij een traditioneel dekbed vangt de losse hoes het meeste zweet en andere viezigheid op, maar bij een wasbaar dekbed vormt de buitenlaag (de tijk) samen met de vulling één geheel. Daardoor kan vuil dat normaal in de overtrek blijft sneller in het dekbed zelf trekken, wat regelmatig wassen extra belangrijk maakt.

Tegelijk is dat precies waarom zo’n dekbed in de praktijk vaak juist hygiënischer is: je doet telkens het hele dekbed, inclusief vulling, in de was. Heb je een traditioneel dekbed met een aparte hoes, dan was je die dekbedhoes waarschijnlijk eens per week of twee weken. Het dekbed zelf was je waarschijnlijk een stuk minder vaak. Dus per saldo is een dekbed zonder overtrek dus hygiënischer. Mits je het dus regelmatig wast…

Hoe vaak is regelmatig wassen?

Voor de meeste mensen volstaat het om dit dekbed eens in de één à twee weken in de wasmachine te stoppen. Slaap je in je eentje en zweet je weinig, dan kun je die twee weken aanhouden. Heb je het snel warm, deel je het bed met iemand (of een huisdier) of heb je last van allergieën, dan is wekelijks wassen beter. Zo blijft niet alleen de buitenkant schoon, maar ook de binnenkant van het dekbed.

Het is wel belangrijk dat je dat wassen op de juiste manier doet. Wasbare dekbedden kunnen best wat hebben, maar te veel draaien in de trommel kan de vezels beschadigen. Gebruik daarom een mild vloeibaar wasmiddel en sla de wasverzachter over. Zorg ook dat het dekbed genoeg ruimte heeft in de machine. Wanneer je echt moet proppen om hem erin te krijgen, schuurt de stof tegen de trommelwand en slijt het sneller.

©ID.nl

Wanneer moet je een dekbed zonder losse hoes vaker wassen?

Soms is een extra wasbeurt nodig. Ben je ziek geweest of heb je koorts gehad? Na ziekte of koorts is het verstandig het dekbed meteen te wassen op minimaal 40 graden. Kijk op het etiket om te zien of je misschien zelfs op 60 graden kunt wassen. Eet je weleens in bed en mors je koffie, thee of iets anders? Of heb je een bloedneus of een wondje? Ook dan is een extra wasbeurt geen overbodige luxe. Tot slot is het voor jezelf prettig om het dekbed in de zomer echt minimaal 1x per week te wassen. Je zweet dan nu eenmaal meer, en de nachten kunnen broeierig zijn.

Waarom je beter geen wasverzachter kunt gebruiken

De vulling van de meeste moderne wasbare dekbedden bestaat uit gesiliconiseerde holle vezels. Deze vezels hebben van nature een gladde siliconenlaag waardoor ze soepel langs elkaar heen glijden. Dit zorgt voor de luchtigheid van het dekbed. Wasverzachter brengt een wasachtig, vettig laagje aan op deze vezels. In plaats van dat de vezels langs elkaar glijden, worden ze juist een beetje plakkerig. Zodra de vezels aan elkaar kleven, verdwijnt de lucht tussen de vezels en daarmee ook de veerkracht en de warmte-isolatie van het dekbed. Het voelt dus klonterig aan. Ook verstopt de vette laag van de wasverzachter de holle ruimtes in en tussen de vezels. Hierdoor kan het dekbed minder goed vocht en warmte reguleren. Je dekbed ademt daardoor minder goed.

Wasbaar dekbed drogen

Wil je een traditioneel dekbed drogen, dan duurt dat vaak uren. Maar omdat de vulling van wasbare dekbedden bestaat uit synthetische holle vezels, is de droogtijd een stuk korter. Kijk wel goed op het wasetiket hoe heet de droger mag staan; je kunt een iets langer programma kiezen op een lagere temperatuur dan een superkort programma dat eigenlijk te heet staat. Dat is voor een synthetische vulling niet goed.

Wasbaar dekbed? 1x per week of twee weken in de was!

Zoals je ziet valt het onderhoud eigenlijk reuze mee. Door een wasbaar dekbed wekelijks of om de week te wassen en goed te laten drogen, blijft je bed schoon en fris. Vaker is alleen in een enkel uitzonderingsgeval nodig. Al met al is het dus niet zo veel werk als je misschien denkt!

▼ Volgende artikel
Clair Obscur: Expedition 33-makers geridderd in Frankrijk
Huis

Clair Obscur: Expedition 33-makers geridderd in Frankrijk

De werknemers van Sandfall Interactive, de ontwikkelaar van de vorig jaar uitgekomen game Clair Obscur: Expedition 33, zijn geridderd in Frankrijk.

De 28 Franse ontwikkelaars hebben afgelopen week de hoogst mogelijk culturele onderscheiding in Frankrijk ontvangen. Het gaat om de Orde van Kunst en Letteren. Dit vanwege hun werk aan Clair Obscur: Expedition 33.

De Franse minister van Cultuur, Rachida Dati, ridderde de werknemers. In Frankrijk worden elk jaar maximaal tweehonderd mensen geridderd voor de Orde van Kunst en Letteren. Mensen die geridderd worden moeten een significante bijdrage hebben geleverd aan de verrijking van de culturele erfgoed van het land. Eerdere mensen uit de game-industrie die ook zijn geridderd in Frankrijk, zijn Rayman-bedenker Michel Ancel en Mario-bedenker Shigeru Miyamoto.

Over Clair Obscur: Expedition 33

Clair Obscur: Expedition 33 kwam afgelopen voorjaar uit voor PlayStation 5, Xbox Series-consoles en pc. De game van Sandfall Interactive combineert traditionele turn-based rpg-gameplay met een flitsende, moderne presentatie.

In de game leeft de mensheid in een maatschappij waarin een entiteit genaamd de Paintress elk jaar de wereld opnieuw schildert. Daarbij plaatst ze een vervloekt cijfer, waardoor iedereen die de leeftijd heeft gelijk aan dat cijfer verdwijnt. In de game is het de beurt aan drieëndertigjarigen, maar een team geleid door Gustave probeert dit tegen te gaan.

Clair Obscur: Expedition 33 bleek een groot succes: het spel werd miljoenen keren verkocht en won de award voor game van het jaar tijdens The Game Awards eind vorig jaar. Dat is des te indrukwekkender wetende dat het om de debuutgame van Sandfall Interactive gaat.

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.