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
Meer grip op je data: zo wis je je Facebook-geschiedenis
© ID.nl
Huis

Meer grip op je data: zo wis je je Facebook-geschiedenis

Alles wat je op Facebook doet, wordt automatisch op de achtergrond opgeslagen. Iedere video die je bekijkt en iedere reactie die je achterlaat, belandt achter de schermen in een archief. Voel je je daar niet prettig bij? Geen paniek: je kunt die geschiedenis bekijken en zelf wissen.

Dit gaan we doen

Facebook bewaart al je acties in een activiteitenlogboek: van bekeken video's tot zoekopdrachten en reacties. In dit artikel zie je waar je dat logboek vindt, hoe je per categorie losse items verwijdert of in één keer een hele reeks wist, en hoe je je zoekgeschiedenis opruimt. Tot slot loop je door de diepere lagen van het logboek, zodat je ook gekoppelde data, zoals je Instagram-zoekopdrachten, weghaalt. 

Lees ook: 20 tips om je online privacy te waarborgen

Activiteitenlogboek

Om je Facebook-geschiedenis te wissen, open je de app in een internetbrowser en klik je rechtsboven op je profielfoto. Kies Instellingen en privacy in het keuzemenu en open vervolgens Instellingen. Scrol in de linkerkolom tot het onderdeel Je activiteit en toestemmingen en dubbelklik op Activiteitenlogboek.

Aan de rechterkant zie je een overzicht van je volledige geschiedenis: livevideo's, bekeken video's, zoekopdrachten, reacties, groepsberichten, opmerkingen, verhalen, pagina-likes, vrienden, inlogsessies en relaties. Al deze informatie vind je netjes in deze rubrieken terug. Blader door het logboek en verwijder wat je liever kwijt dan rijk bent.

Controleer het Activiteitenlogboek en verwijder wat je wilt laten verdwijnen.
View post on TikTok

Item per item of meteen de volledige categorie verwijderen

Het is niet mogelijk om al die geschiedenis in één keer te elimineren. Dat staat Facebook niet toe. Je moet dus elke sectie doorlopen en zien wat tot nu toe is verzameld en wat je wilt verwijderen. Bijvoorbeeld, in de sectie Video's die je hebt bekeken, zie je de lijst van alle filmpjes die je hebt bekeken sinds je je account hebt aangemaakt. Je kunt dus een reis terug in de tijd maken door in deze sectie de knop Weergeven te gebruiken.

Wil je één bepaald item uit de geschiedenis verwijderen, dan klik je op de drie puntjes aan de rechterkant van dat item en kies je de opdracht Verwijderen. Als je de volledige kijkgeschiedenis wilt zappen, scrol je omhoog en selecteer je in dit voorbeeld de knop Kijkgeschiedenis van video wissen.

Het is mogelijk om de volledige kijkgeschiedenis van video in één keer te verwijderen.

Zoekgeschiedenis

Je zoekgeschiedenis kun je ook via een andere route wissen: ga naar Instellingen / Accountcentrum / Je gegevens en toestemmingen / Zoekgeschiedenis. Klik op het pijltje rechts en vervolgens op de blauwe knop Alle zoekopdrachten wissen.

Wil je nog dieper gaan? Open opnieuw het Activiteitenlogboek en klik op Je Facebook-activiteit. Daar verschijnt weer een menu met reacties, berichten, groepen, pagina's, polls en meer. Doorloop elke categorie en verwijder alles wat je definitief kwijt wilt.

Zo wis je in één keer niet alleen je zoekopdrachten op Facebook, maar ook op Instagram.

Ben je juist een mega-fan van Facebook?

Dan wil je dit misschien wel aan de muur
▼ Volgende artikel
Router of powerline-adapter: wat is de beste keuze voor betere wifi?
© ER | ID.nl
Huis

Router of powerline-adapter: wat is de beste keuze voor betere wifi?

Haperende streams en trage downloads op zolder zijn grote ergernissen in veel huishoudens. Om dat op te lossen twijfelen veel mensen tussen een krachtiger router of een set powerline-adapters. In dit artikel leggen we precies uit wanneer je voor welke oplossing moet kiezen, zodat je geen geld verspilt aan de verkeerde apparatuur.

Voordat je naar de winkel rent: je moet eerst begrijpen wat er precies misgaat met je verbinding. Wifi-problemen kun je doorgaans opdelen in twee categorieën: een gebrek aan bereik of een gebrek aan capaciteit. Bij een gebrek aan bereik komt het signaal simpelweg niet ver genoeg, bijvoorbeeld omdat dikke betonnen muren of plafonds het signaal blokkeren. Je hebt dan op zolder één streepje bereik of zelfs helemaal geen verbinding. Bij een gebrek aan capaciteit is het signaal wel sterk, maar is de router niet krachtig genoeg om alle data te verwerken. Dat merk je als het internet traag wordt zodra iedereen thuis tegelijk online is. Het onderscheid tussen deze twee oorzaken bepaalt of je een router of een powerline-adapter nodig hebt.

Wanneer is een nieuwe router de oplossing?

De router is het hart van je thuisnetwerk en regelt al het verkeer. Vaak gebruiken mensen het standaardmodem dat ze van hun internetprovider hebben gekregen, maar deze apparaten blinken zelden uit in prestaties. Een losse, hoogwaardige router kopen is de beste keuze wanneer je merkt dat de verbinding in de buurt van het modem al niet optimaal is of wanneer je regelmatig met veel apparaten tegelijk online bent.

Als je in de woonkamer zit en de verbinding hapert zodra de kids op hun tablets zitten, is je huidige router waarschijnlijk niet krachtig genoeg om al die gelijktijdige datastromen te verwerken. Een moderne router met ondersteuning voor wifi 6 kan veel meer apparaten tegelijk bedienen en zorgt voor een hogere, stabielere snelheid op de verdieping waar hij staat.

©Andrii

Internet via het stopcontact met powerline

Een powerline-adapter, ook wel homeplug genoemd, werkt volgens een totaal ander principe. Dit systeem maakt gebruik van het bestaande stroomnet in huis om het internetsignaal te verplaatsen. Je stopt één adapter in het stopcontact bij je router en de tweede adapter in een stopcontact op de plek waar je internet nodig hebt, bijvoorbeeld op zolder of in het tuinhuis.

Dit is de ideale oplossing wanneer het wifi-signaal door dikke betonnen muren of plafonds moet dringen. Waar wifi-golven afketsen op gewapend beton, stuurt de powerline het signaal simpelweg via de koperdraden in de muur naar boven. Dat maakt powerline-adapters uitermate geschikt voor specifieke 'dode zones' die te ver weg liggen voor het bereik van een gewone router.

Populaire merken voor netwerkoplossingen

Als je op zoek gaat naar powerline-adapters, kom je al snel uit bij Devolo. Dit Duitse merk is de onbetwiste marktleider op het gebied van homeplugs en staat bekend om de Magic-serie die zeer stabiele verbindingen via het stroomnet garandeert.

Voor routers en mesh-systemen is TP-Link een zeer populaire keuze vanwege de goede balans tussen prijs en prestaties, met modellen voor elk budget. Netgear richt zich met de Nighthawk-serie vaak op de veeleisende gebruiker en gamers die maximale snelheid wensen. Tot slot is AVM, bekend van de FRITZ!Box, een merk dat zowel uitstekende routers als powerline-oplossingen biedt die naadloos met elkaar samenwerken in één netwerk.

Stabiliteit versus snelheid

Bij de keuze tussen deze twee speelt ook het gebruiksdoel een rol. Powerline-adapters zijn vaak de favoriete keuze voor gamers of mensen die thuiswerken op een vaste pc. De reden hiervoor is dat de tweede adapter vaak beschikt over een netwerkafsluiting, waardoor je je computer met een kabel kunt aansluiten. Een bekabelde verbinding via powerline is doorgaans stabieler en heeft een lagere vertraging (ping) dan wifi, wat cruciaal is bij online gamen. Een nadeel is wel dat de snelheid van powerline afhankelijk is van de kwaliteit van je stroomnet. Oude bedrading of zware apparaten zoals een wasmachine kunnen storing veroorzaken, waardoor de snelheid soms fluctueert. Een high-end router biedt daarentegen vaak een hogere topsnelheid, maar is dus gevoeliger voor afstand en obstakels.

De opkomst van mesh-systemen

Tegenwoordig is er een hybride oplossing die de traditionele router steeds vaker vervangt: Multiroom Wifi of Mesh. Dit zijn feitelijk meerdere routers die met elkaar communiceren. Als je een groot huis hebt en overal perfecte wifi wilt zonder kabels te trekken, is dit vaak een betere, maar ook duurdere oplossing dan een simpele powerline-set. Kies je echter voor een budgetvriendelijke oplossing om snel internet op één specifieke, lastig bereikbare kamer te krijgen, dan wint de powerline-adapter het vaak op prijs-kwaliteitverhouding. Is je doel echter om de algehele snelheid en capaciteit in de woonkamer en keuken te verbeteren, investeer dan in een goede router.