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
Zo vervaag je je huis in Google Maps
© ID.nl
Huis

Zo vervaag je je huis in Google Maps

Wie je adres intikt, kan je huis open en bloot bekijken in Street View van Google Maps. Dat voelt niet bepaald privacyvriendelijk. Vind je het geen prettig idee dat iedereen zomaar een blik op je woning kan werpen? Dan kun je Google vragen om je huis permanent te laten vervagen.

Wat gaan we doen?

We laten zien hoe je je woning in Street View nauwkeurig in beeld brengt, hoe je bij Google meldt dat je die wil laten vervagen en hoe je de aanvraag hiervoor indient.

Lees ook: 5 handige (en misschien onbekende) functies van Google Maps

Sleep het poppetje voor de deur

Google Maps biedt een functie waarmee je specifieke beelden – zoals nummerplaten, objecten of zelfs hele huizen – kunt laten blurren om privacyredenen. Je moet hiervoor een aanvraag indienen en zodra Google die goedkeurt, is de vervaging definitief en zelfs niet meer terug te draaien. Open Google Maps bij voorkeur op je computer, want op mobiele apparaten is deze optie voorlopig nog niet beschikbaar. Zoek vervolgens je adres via de zoekbalk bovenaan en druk op Enter om de woning vanuit de lucht in beeld te brengen. Klik op het Pegman-pictogram, het gele poppetje rechtsonder in het scherm. Sleep het poppetje naar de straat waar je huis staat. De straten die langs deze weg beschikbaar zijn in Street View, lichten blauw op.

Sleep het gele poppetje in de straat zo dicht mogelijk bij je huis.

Probleem melden

Zodra je dit doet, verschijnt het bekende 360°-beeld van jouw straat. Navigeer door de beelden totdat je woning volledig in beeld is. Zet het huis zo centraal mogelijk in het scherm; dat maakt de volgende stap eenvoudiger. Onderaan het beeld zie je in een dunne, donkere strook de opnamedatum, maar ook de knop waar het ons om te doen is: Probleem melden.

In deze weergave vind je de knop Probleem melden in de rechterhoek van de strook onderaan.

Aanvraag

Je komt nu op de Google-pagina Ongepaste Street View melden. Versleep eerst de weergave zodat je woning netjes binnen het rode kader past. Vervolgens geef je aan waarom je de vervaging aanvraagt. Er zijn drie opties: een gezicht, mijn huis of mijn voertuig/een kentekenplaat. Kies uiteraard de tweede mogelijkheid. Het is ook mogelijk om vervaging aan te vragen voor een privéweg of een oprit. Vul zeker je e-mailadres in en klik op Versturen. Na het verzenden ontvang je een e-mail van Google over je aanvraag. Als alles duidelijk is, wordt de vervaging binnen enkele dagen tot weken doorgevoerd. Houd er rekening mee dat je de aanvraag soms meerdere keren moet indienen als je woning vanuit verschillende hoeken zichtbaar is.

Plaats de woning netjes binnen het rode kader.


Ook fijn, qua privacy:

View post on TikTok

Blur, maar dan anders

(en toch ook weer niet)
▼ Volgende artikel
Samsung deelt teaser voor Galaxy S26-onthullingsevent
© Samsung
Huis

Samsung deelt teaser voor Galaxy S26-onthullingsevent

Na diverse geruchten en leaks is eindelijk bekend wanneer de onthulling van de Samsung Galaxy S26-serie plaatsvindt: namelijk op 25 februari.

Vorige maand lekte de datum van het tweejaarlijkse Galaxy Unpacked-evenement al. Het is zo goed als zeker dat daar de nieuwe Samsung Galaxy S26-lijn wordt onthuld, dus fans wachten met smart op het evenement.

Inmiddels heeft Samsung zelf een teaser voor het evenement online geplaatst, waardoor we inmiddels zeker weten dat het op 25 februari plaatsvindt. Om precies te zijn begint het om 19:00 uur Nederlandse tijd - dan zal het evenement, dat in San Francisco wordt gehouden, ook live online te zien zijn. De teaser valt hieronder te bekijken.

Watch on YouTube

Over de Samsung Galaxy S26-toestellen

Samsung brengt dit jaar naar verwachting de Galaxy S26, S26+ en S26 Ultra uit. 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.

Daarnaast ligt de focus op verbeterde camera's en het gebruik van AI bij het schieten van plaatjes, zo bleek onlangs al uit enkele teaservideo's.

View post on Instagram