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
In een half uur klaar: gourmetstel schoonmaken stap voor stap
© sara_winter - stock.adobe.com
Huis

In een half uur klaar: gourmetstel schoonmaken stap voor stap

Gezellig, zo'n avondje gourmetten. Maar na afloop blijft er op het gourmetstel vaak aangebakken vet, gesmolten kaas en saus achter. Logisch dat je niet meteen zin hebt om de boel schoon te maken. Als je het slim aanpakt, is alles binnen een half uurtje weer schoon!

In dit artikel

Je leest hoe je je gourmetstel stap voor stap schoonmaakt zonder de antiaanbaklaag te beschadigen. We leggen uit wanneer je het beste begint met schoonmaken, hoe je losse onderdelen en het elektrische deel veilig reinigt en welke fouten je beter niet kunt maken. Ook krijg je praktische tips om je tafel tijdens en na het gourmetten schoon te houden, zodat je na afloop snel klaar bent.

Lees ook: Gourmetten zonder stank: 10 ideeën die écht werken

Laten afkoelen, maar wacht niet te lang

Zet het gourmetstel na gebruik uit en trek de stekker uit het stopcontact. Laat het geheel afkoelen tot het handwarm is. Wacht je te lang, dan koeken vet en kaas vast en wordt schoonmaken lastiger. Haal losse onderdelen zoals pannetjes, spatels en bakplaatjes eraf voordat je begint met schoonmaken.

Losse onderdelen schoonmaken

Gourmetpannetjes en bakplaatjes hebben meestal een antiaanbaklaag. Die blijft het mooist als je ze niet hardhandig schoon schrobt. Leg ze in warm water met een beetje afwasmiddel en laat ze tien tot vijftien minuten weken. Aangekoekte resten laten dan vanzelf los. Gebruik daarna een zachte spons of borstel en spoel alles goed af. Controleer altijd even de handleiding: sommige onderdelen kun je in de vaatwasser doen, andere juist niet.

©Saskia van Weert

Zo maak je het elektrische deel veilig schoon

Terwijl de pannetjes, spatels en losse bakplaatjes staan te weken, ga je door met het verwarmingselement. Dat element zelf mag nooit nat worden. Zie je vetspetters of etensresten, veeg die dan weg met keukenpapier zodra het gourmetstel is afgekoeld. Voor hardnekkiger vuil gebruik je een licht vochtige doek met een klein beetje afwasmiddel. Knijp de doek goed uit en zorg dat er geen water bij het snoer of in openingen komt. Droog alles direct na met een schone doek.

De bak- of grillplaat weer vetvrij krijgen

Heeft je gourmetstel een losse bak- of grillplaat, haal dan eerst het overtollige vet weg met keukenpapier. Leg de plaat vervolgens in warm water, zodat aangekoekte resten kunnen losweken. Is de bakplaat vast onderdeel van het gourmetstel, dan kun je deze uiteraard niet in water onderdompelen. Neem in dat geval de plaat af met een licht vochtige doek zodra hij is afgekoeld, eventueel met een beetje afwasmiddel. Zo voorkom je dat vet tijdens het schoonmaken uitsmeert. Gebruik vooral geen schuursponsjes of schrapers om het vet weg te krijgen, want die beschadigen de coating en zorgen ervoor dat eten de volgende keer sneller blijft plakken. 

Watch on YouTube

Veelgemaakte fouten bij het schoonmaken van een gourmetstel

Aangekoekte resten wegkrabben met een mesje of staalwol lijkt misschien slim (want: snel), maar beschadigt de antiaanbaklaag blijvend. Ook bij het elektrische deel gaat het vaak mis. Het verwarmingselement onderdompelen in water is onveilig en kan het gourmetstel onbruikbaar maken. Alles direct in de vaatwasser zetten is ook geen goed idee. Vaatwasprogramma's duren vaak lang en werken op hoge temperaturen. Antiaanbaklagen en dunne metalen onderdelen kunnen daardoor sneller slijten of kromtrekken. Twijfel je, dan is met de hand afwassen altijd de veiligste keuze.

Vergeet je tafel niet!

Vetspetters en gemorste saus zijn bijna niet te voorkomen. Leg daarom vooraf een afwasbaar tafelkleed of gebruik een papieren tafelkleed. Dat kan na het gourmetten rechtstreeks de vuilnisbak in. Houd tijdens het eten keukenpapier of doekjes bij de hand om gemorste resten meteen weg te vegen. Is de tafel toch vies geworden, neem hem dan zo snel mogelijk af met warm water en een mild schoonmaakmiddel.

Schoon wegzetten voor de volgende keer

Laat alle onderdelen volledig drogen voordat je het gourmetstel opbergt. Berg je alles nog vochtig op in de doos of kast, dan kunnen er snel muffe geurtjes ontstaan. Bewaar pannetjes en platen apart van elkaar, eventueel met een vel keukenpapier ertussen. Berg pannetjes en platen apart op, eventueel met een velletje keukenpapier ertussen. Zo voorkom je krassen. Zo is het volgende keer alleen nog maar een kwestie van de boel weer tevoorschijn halen en lekker gaan eten. Veel gourmetplezier!

▼ Volgende artikel
Wat is HDR10+ en wanneer zie je het verschil?
© ER | ID.nl
Huis

Wat is HDR10+ en wanneer zie je het verschil?

Ben je op zoek naar een nieuwe televisie? Grote kans dat de afkortingen je om de oren vliegen. 4K, OLED, QLED... en dan ook nog die eindeloze lijst aan HDR-formaten. Vandaag zoomen we in op een specifieke term die je vaak op de doos ziet staan, vooral bij televisies van Samsung, Panasonic en Philips: HDR10+. Is het een marketingkreet of zie je het echt?

Het is een bekend scenario: je staat in de elektronicawinkel of scrolt door een webshop, en de specificatielijst van je droomtelevisie lijkt wel een geheimtaal. Fabrikanten beloven gouden bergen met termen die indrukwekkend klinken, maar waarvan de betekenis vaak vaag blijft. Toch is het zonde om deze termen zomaar te negeren, want achter die cryptische afkortingen gaan technieken schuil die je filmavond aanzienlijk kunnen upgraden. Het gaat tegenwoordig namelijk niet meer alleen om hoeveel pixels je scherm heeft, maar vooral om de kwaliteit van die pixels. Om te begrijpen waarom die plus in de naam HDR10+ zo belangrijk is, moeten we terug naar de basis.

Eerst even terug: Wat is HDR ook alweer?

HDR staat voor High Dynamic Range. Simpel gezegd zorgt deze techniek ervoor dat de beelden op je tv een groter contrast en meer kleuren hebben. Het zwart is dieper zwart en de felle lichten, zoals een explosie of de zon, knállen echt van je scherm zonder dat de rest van het beeld flets wordt. De standaardvorm hiervan heet HDR10. Dit is de basislaag die bijna elke moderne 4K-televisie ondersteunt. Maar HDR10 heeft één beperking: hij bepaalt aan het begin van de film de instellingen voor helderheid en contrast, en houdt die vervolgens de hele film vast.

©ER | ID.nl

De plus maakt het dynamisch

Hier komt HDR10+ om de hoek kijken. Die plus staat eigenlijk voor dynamische metadata. In plaats van één instelling voor de hele film, stuurt HDR10+ extra informatie mee naar je tv. Hierdoor kan de televisie het beeld scène voor scène of zelfs frame voor frame aanpassen. Zie het als een lichttechnicus die continu aan de knoppen draait om te zorgen dat elk specifiek shot er perfect uitziet, in plaats van dat hij het licht aan het begin instelt en daarna rustig koffie gaat drinken.

Wanneer zie je het verschil echt?

Klinkt goed op papier, maar merk je dit in de praktijk? Het antwoord is ja, vooral in films met veel wisselingen tussen licht en donker. Stel, je kijkt een film die begint met een scène in een zonovergoten woestijn, gevolgd door een scène in een pikdonkere grot. Bij standaard HDR10 stelt de tv zich in op het gemiddelde van de hele film. Omdat die woestijn zo fel is, kan de grot-scène er daarna wat te donker of dichtgelopen uitzien, waardoor details in de schaduw wegvallen.

Bij HDR10+ krijgt je tv, zodra de camera de grot in gaat, een seintje dat het donker wordt en het contrast moet worden aangepast. Hierdoor zie je opeens wél de details op de rotswanden en de texturen in de schaduw, terwijl de felle scènes nog steeds spathelder blijven. Kortom, HDR10+ haalt meer detail uit zowel de donkerste schaduwen als de felste hooglichten, precies op het moment dat het nodig is.

©Gorodenkoff - stock.adobe.com

Wat heb je nodig?

Om van HDR10+ te genieten, moeten alle schakels in de ketting kloppen. Allereerst heb je een geschikte televisie nodig. Vooral Samsung is de grote aanjager van HDR10+, maar ook merken als Panasonic, Philips en TCL ondersteunen het vaak. Let er wel op dat LG en Sony meestal kiezen voor de concurrent Dolby Vision.

Daarnaast moet de content (de film of serie die je kijkt) in HDR10+ geschoten zijn. Amazon Prime Video is de grootste aanbieder van HDR10+-materiaal op streaming-gebied, maar ook Apple TV+ en Google Play Movies bieden het aan. Netflix gebruikt helaas voornamelijk concurrent Dolby Vision. Tot slot ondersteunen veel 4K Ultra-HD Blu-rays het formaat ook als je liever fysieke schijfjes kijkt.

Direct aanschaffen dan maar...?

Is HDR10+ een reden om je huidige tv direct bij het grofvuil te zetten? Nee, dat niet. Maar sta je op het punt een nieuwe tv te kopen, bijvoorbeeld een Samsung, dan is het wel een hele fijne bonus. Het zorgt ervoor dat je films en series ziet zoals de regisseur ze bedoeld heeft: levendig, contrastrijk en vol detail. En ze hoeven tegenwoordig al helemaal niet meer de wereld te kosten.