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
AI-tip: zo maak je zelf (heel snel!) een geïllustreerd kinderboek met Storybook
Huis

AI-tip: zo maak je zelf (heel snel!) een geïllustreerd kinderboek met Storybook

Word de held van je (klein)kinderen door hen te verrassen met een uniek, zelfgemaakt verhalenboek. Laat hen zelf de grote lijnen van het verhaal bedenken en zie hoe je dankzij Storybook in een handomdraai een prachtig digitaal boekje creëert, compleet met een mooie cover en bijpassende illustraties.

Dit gaan we doen

In dit artikel laten we zien hoe je met Google Storybook een persoonlijk prentenboek maakt. Je leest hoe je een goede prompt schrijft, hoe het boek automatisch wordt opgebouwd met tekst en illustraties en welke extra opties er zijn, zoals voorlezen, delen en downloaden als pdf. Zo weet je precies wat je kunt verwachten en hoe je het resultaat afstemt op je (klein)kind.

Lees ook: Handige AI-apps voor mobiel

Stap 1: De prompt

Storybook draait op de Gemini AI-chatbot van Google. De functie is gloednieuw en op dit moment alleen te gebruiken via het web, niet via de Gemini-apps voor Android of iPhone. Het goede nieuws: Storybook is helemaal gratis. Je hoeft dus geen betaald abonnement te nemen om het uit te proberen. Wel moet je ingelogd zijn met je Google-account. Surf vervolgens naar: https://gemini.google.com/gem/storybook

Net als bij andere generatieve AI-tools start je met een tekstopdracht, de zogeheten prompt. In een paar zinnen beschrijf je het onderwerp. Of je kiest voor een uitgebreidere instructie, bijvoorbeeld: "Kun je een verhaal maken dat aan een kind uitlegt hoe het leven van een vlinder eruitziet?"

Geef Storybook een tekstopdracht.

Stap 2: Prentenboek van 10 pagina's

Boven het tekstvak vind je alvast enkele inspirerende voorbeelden van recente prompts, compleet met het bijbehorende verhaal. Denk aan: 'Mijn kind van 7 wil niet logeren bij oma. Maak een Storybook om haar te helpen hiermee om te gaan.' Je kunt je eigen prompt typen, maar ook inspreken: klik op het microfoontje, geef Gemini toegang tot je microfoon en vertel je opdracht. Enkele seconden later verschijnt het prentenboek op het scherm. Elk boek telt tien pagina's, inclusief een prachtige omslag én een door Gemini bedachte titel. Met iedere klik blader je door het verhaal. De tekst is verzorgd opgemaakt en de illustraties zijn verrassend sfeervol. Wij waren aangenaam verrast door de kwaliteit.

Naast iedere tekst staat een bijpassende illustratie.

Stap 3: Lezen of luisteren

Je kunt het verhaal natuurlijk gewoon lezen, maar Storybook heeft nog een extra troef: een ingebouwde voorleesfunctie. Daarbij kun je kiezen om alleen de huidige pagina te beluisteren of om vanaf de eerste pagina te beginnen. De hoogte van de stem is instelbaar, zodat je een toon kunt kiezen die het best bij het verhaal of de luisteraar past. En het plezier stopt daar niet: via de Deel-knop krijg je een unieke link naar jouw persoonlijke Storybook. Die kun je eenvoudig doorsturen naar familie, vrienden of de kinderen zelf, zodat ze het boekje op hun eigen toestel kunnen bekijken en beluisteren. Bovendien kun je het boekje ook downloaden als pdf. Wil je dat je kind ook offline kan bladeren, dan kun je het dus voor hem of haar printen.

Je ontvangt een link om het geïllustreerde verhaal te delen.

🧚Sprookjesboek geschreven?

👑 Daar hoort een prinsessenjurk bij!
▼ Volgende artikel
Gourmetten zonder stank: 10 ideeën die écht werken
© NilsZ - stock.adobe.com
Huis

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

Gourmetten is misschien wel dé nationale volkssport tijdens de feestdagen. Maar hoe leuk de avond ook is, de ochtend erna is vaak minder feestelijk. Die doordringende vetlucht die in je gordijnen, bank en kleding is getrokken, ben je liever kwijt dan rijk. Met deze tien tips – verdeeld over wat je eet en wat je doet – blijft je huis een stuk frisser!

Dit gaan we doen

Stankvrij gourmetten is een kwestie van goede voorbereiding én de juiste nazorg. We splitsen de tien tips daarom op. We beginnen bij de basis: ingrediënten en spullen die nauwelijks rook veroorzaken. Vervolgens geven we je praktische hacks om, mocht er toch wat gourmetlucht blijven hangen, die direct weer uit je woonkamer te krijgen, zodat je de volgende ochtend wakker wordt in een fris huis.

Lees ook: Gourmetten nieuwe stijl: topfavoriet met een eigen twist

Ingrediënten & materialen

De meeste stank ontstaat niet door het gourmetstel zelf, maar door wat we erop leggen. Verbrande boter, karamelliserende suikers en spetterend vet zijn de grote boosdoeners. Met een paar slimme aanpassingen aan je boodschappenlijstje ben je de rookwolken voor.

Tip 1: Investeer in hittebestendige olie

De fout die bijna iedereen maakt: bakken in roomboter of standaard olijfolie. Deze vetten verbranden snel bij de hoge temperaturen van het gourmetten, wat zorgt voor die zware, scherpe walm. Kijk in de supermarkt eens schuin boven de olijfolie; daar vind je rijstolie of arachideolie. Deze oliesoorten hebben een veel hoger rookpunt en blijven stabiel als ze heet worden. Wil je het jezelf helemaal makkelijk maken? Koop dan een bakspray. Daarmee nevel je de pannetjes of de plaat licht in, waardoor je nooit te veel gebruikt en het vet niet onnodig staat te walmen.

Tip 2: Laat de kant-en-klare marinades staan

Die voorgemarineerde schotels uit de supermarkt zijn makkelijk, maar funest voor de luchtkwaliteit. De marinades zitten namelijk vaak vol suiker en water. Zodra dat de hete pan raakt, verbrandt de suiker en verdampt het vocht, met veel rook tot gevolg. Je kunt beter ongemarineerd vlees of vis kopen. Wil je toch smaak? Gebruik dan een dry rub (een droog kruidenmengsel) om het vlees vooraf te kruiden. Als je echt van sausjes houdt, kun je die beter koud op je bord toevoegen dan warm in het pannetje.

Tip 3: Kies voor 'droger' vlees en meer groente

Hoe meer vet er in het vlees zit, hoe meer het spettert en rookt. Hamburgers, worstjes en speklapjes zijn in feite kleine rookbommen. Kies liever voor magere opties zoals biefstuk, kipfilet, kalkoen of witvis. Daarnaast kun je de geuroverlast flink beperken door de verhouding vlees/groente om te draaien. Plakjes courgette, paprika, champignons en aubergine bakken vrijwel geurloos. Met een goede mandolineof groentesnijder maak je in een handomdraai dunne plakjes die snel gaar zijn, waardoor je minder lang hoeft te bakken.

Tip 4: Vervang die oude, bekraste pannetjes

Kijk voordat je begint eens kritisch naar je huidige gourmetstel. Zitten de pannetjes vol krassen en is de antiaanbaklaag versleten? Dan koekt je eten sneller aan, wat zorgt voor verbrandingsluchtjes die je de dag erna nog ruikt. Het is vaak helemaal niet nodig om een compleet nieuw apparaat te kopen; veel fabrikanten verkopen losse pannetjes of nieuwe bakplaten. Voor een paar tientjes bak je weer op een glad oppervlak, heb je minder olie nodig en ben je niet de hele avond bezig aangekoekte resten weg te schrapen.

Tip 5: Gebruik een gourmetstel met keramische coating

Ben je toch toe aan een heel nieuw apparaat? Let dan goed op de coating. Tegenwoordig zijn er gourmetstellen met een keramische bakplaat. Deze kunnen vaak hogere temperaturen aan zonder dat de laag beschadigt en ze zijn veel makkelijker schoon te maken.

Watch on YouTube

Zo ga je de strijd aan met de luchtjes in huis

Zelfs met de beste ingrediënten ontkom je niet aan enige baklucht. Gelukkig zijn er genoeg manieren om te voorkomen dat die geur permanent blijft hangen.

Tip 6: Zet een aromadiffuser aan

Een geurkaars maskeert de lucht vaak alleen maar, waardoor je een weeïge mengeling krijgt van lavendel en hamburger. Een betere optie is een elektrische aromadiffuser (ook wel vernevelaar genoemd). Dit apparaat verspreidt via koude waterdamp een constante, frisse geur naar keuze door de kamer, zonder dat er verbranding aan te pas komt. Kies voor essentiële oliën die bekend staan om hun verfrissende werking, zoals citroengras, eucalyptus of dennen. De waterdamp helpt bovendien meteen tegen de droge lucht in huis als de verwarming hoog staat.

Tip 7: Laat de luchtreiniger draaien

Misschien heb je er al eentje staan, en anders is dit het moment: de luchtreiniger. Let er bij aanschaf op dat het apparaat een koolstoffilter heeft, want alleen HEPA is niet genoeg voor kookluchtjes. Een koolstoffilter absorbeert gassen en geuren. Zet het apparaat niet pas aan als je naar bed gaat, maar laat hem al draaien zodra het gourmetstel aangaat. Heb je een modern exemplaar met een app? Zet hem dan alvast op de hoogste stand voordat de eerste walm ontstaat.

Tip 8: Ventileer flink

Ramen openzetten klinkt logisch, maar doe het wel slim. Eén raampje op een kier doet weinig. Je hebt trek nodig. Zet aan weerszijden van de woning een raam of rooster open zodat de luchtstroom de damp direct meeneemt. Vind je het te koud worden? Zet de verwarming gerust tijdelijk wat hoger; de kosten daarvan wegen niet op tegen de stomerijkosten van je gordijnen. Plaats eventueel een simpele tafelventilator in de buurt van het gourmetstel (niet erop gericht, maar richting het open raam) om de rook een handje te helpen de juiste kant op te gaan.

Tip 9: Azijn & koffie

Het is een klassieker uit grootmoeders tijd, maar hij werkt nog steeds: azijn neutraliseert. Je kunt bakjes azijn neerzetten, maar voor het zware werk kun je na het eten beter even een pannetje water met een flinke scheut schoonmaakazijn op het fornuis koken. Laat de afzuigkap uit en laat de damp door de kamer trekken. Vind je de azijnlucht zelf te heftig? Gooi er dan wat citroenschillen, een kaneelstokje of kruidnagel bij. Zo ruikt je huis direct weer naar winterse gezelligheid in plaats van naar een snackbar. Wat ook kan, is koffie. Zet na het eten een paar schaaltjes met gemalen koffie (snelfiltermaling) in de woonkamer. De koffie neutraliseert de zware baklucht en vervangt deze door een neutraal, aards aroma. Voor een nog sterker effect kun je wat koffiebonen op een warme onderzetter leggen; door de restwarmte verspreiden ze een subtiele geur die de gourmetlucht naar de achtergrond verdrijft.

Tip 10: Maak meteen met schoon

Het is verleidelijk om na het eten uit te buiken op de bank en de ravage te laten voor wat het is. Doe het niet. Zolang het gourmetstel vet en warm in de kamer staat, blijft het geur verspreiden. Haal direct na het eten een stuk keukenrol over de plaat. Gebruik daarna een sopje van afwasmiddel en warm water om de plaat en de tafel (want ja, vetnevel komt overal) af te nemen. Geloof ons, door hier na het eten even een paar minuten tijd voor vrij te maken, bespaar je jezelf de volgende ochtend een hoop gourmetluchtfrustratie!