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
Waar voor je geld: 5 robuuste sporthorloges voor een mooie prijs
© www.peopleimages.com
Gezond leven

Waar voor je geld: 5 robuuste sporthorloges voor een mooie prijs

Bij ID.nl zijn we dol op kwaliteitsproducten waar je niet de hoofdprijs voor betaalt. Een paar keer per week speuren we binnen een bepaald thema naar zulke deals. Ben je op zoek naar een betaalbaar sporthorloge? Vandaag hebben we vijf interessante modellen voor je gespot.

Xiaomi Smart Band 9

De onlangs verschenen Xiaomi Smart Band 9 is goedkoop en kent ook nog eens verrassend veel functies. Dit langwerpige sporthorloge is in de kleurstellingen zilver-wit, zwart en roze verkrijgbaar. Het amoledscherm van 1,62 inch biedt voldoende ruimte om diverse gegevens te tonen. Dankzij een respectabele resolutie van 192 × 490 pixels verschijnt alle informatie scherp in beeld – denk daarbij aan stappen, verbrande calorieën, weersverwachting en natuurlijk de tijd. Alle functies zijn via het aanraakscherm bereikbaar, want de Smart Band 9 heeft geen fysieke knoppen. De waterdichte behuizing weegt maar 15,8 gram (zonder bandje).

Kies in het menu tussen ruim 150 sportmodi en start vervolgens de training. Tijdens de inspanning kun je jouw hartslag in de gaten houden. Je koppelt de Smart Band 9 via bluetooth eenvoudig aan een smartphone. Laat het mobiele toestel vervolgens in je broek- of jaszak zitten, want inkomende notificaties verschijnen rechtstreeks op je pols. Een prettige eigenschap is dat je het scherm ook op zonovergoten plekken nog prima kunt lezen. Aan de hand van een lichtsensor kiest deze smartwatch automatisch de juiste helderheid. Ten slotte is de beschikbaarheid van meer dan tweehonderd wijzerplaten een leuk extraatje.

Garmin Instinct 2

Met deze relatief goedkope smartwatch van Garmin houd je nauwlettend jouw sportieve prestaties in de gaten. Je kunt de Instinct 2 zowel binnen als buiten dragen, want de robuuste behuizing is waterdicht tot een diepte van honderd meter. Op het ronde display van 176 × 176 pixels zie je onder meer de actuele hartslag, het aantal gezette stappen en de huidige snelheid. Er zijn ook een hoogtemeter en elektrisch kompas geïntegreerd. Onder leiding van diverse sport-apps doe je uiteenlopende trainingen. Je kunt bovendien na elke nacht de uitgebreide slaapmonitor bekijken.

Wanneer het sporthorloge met een smartphone is verbonden, zie je inkomende pushnotificaties voorbijkomen. De Instinct 2 bevat een energiezuinig zwart-witscherm. Dat komt de accuduur ten goede! De fabrikant claimt dan ook een batterijduur van zo'n 28 dagen in de smartwatchmodus. Het hier besproken model heeft een horlogekast van 45 millimeter. Als alternatief kun je een vergelijkbaar sporthorloge met een horlogekast van 40 millimeter kopen, de Garmin Instinct 2S.

Garmin Forerunner 255 Music

Ren, wandel of fiets je met een lekker muziekje nét wat steviger door? De Garmin Forerunner 255 Music is hiervoor bij uitstek geschikt. Je kunt namelijk nummers van Spotify, Deezer of YouTube Music downloaden en in het geheugen van deze smartwatch opslaan. Laat dus tijdens trainingen voortaan je smartphone thuisliggen en bedien de muziek vanaf je pols. Je hebt voor deze functie trouwens wel een betaald abonnement bij een van de genoemde muziekdiensten nodig. De Forerunner 255 Music heeft een horlogekast van 46 millimeter. Kies tussen een zwarte en witte uitvoering.

Op het ruime 1,3inch-kleurenscherm van 260 × 260 pixels zijn er een heleboel functies toegankelijk. Denk onder andere aan een calorieënteller, hartslagmeter, bloedzuurstofmeter, slaapmonitor, snelheidsmeter, stappenteller en stopwatch. De Forerunner 255 Music toont ook meldingen van een verbonden smartphone. Krijg je bijvoorbeeld een WhatsApp-bericht, dan gaat de weerbestendige behuizing kortstondig trillen. Tot slot gebruik je deze veelzijdige smartwatch ook om contactloos te betalen.

Lees ook: Dit zijn de 9 sporten waarmee je het makkelijkst afvalt

Polar Pacer Pro

Zoek je een licht sporthorloge met zéér veel functies? Kijk dan eens naar de Polar Pacer Pro. Wegens het gewicht van 41 gram voel je dit apparaatje amper zitten. In de horlogekast van 45 millimeter is er een 1,2inch-kleurenscherm van 240 × 240 pixels verwerkt. Het display is voorzien van Gorilla Glass en gaat dus niet zomaar stuk. Verder is de behuizing waterdicht tot een diepte van vijftig meter. In het menu staan er ruim 150 sportprofielen voor je klaar. Fijn is dat deze smartwatch ook allerlei 'exotische' sporten ondersteunt, zoals (kite)surfen, rolschaatsen en skiën. Zodra je een keuze hebt gemaakt, monitort de Pacer Pro diverse sportieve prestaties.

Onder de motorkap bevindt zich een gps-chip, zodat deze smartwatch overal ter wereld je locatie kan bepalen. Handig is dat je routes van de bekende app Komoot kunt synchroniseren. Kijk voor routeaanwijzingen voortaan op je pols. Verder werkt de Pacer Pro ook naadloos met de veelgebruikte sport-app Strava samen. Hoewel Polar in zijn eigen webwinkel een tarief van 349,90 euro hanteert, vragen diverse andere bekende webshops minder dan tweehonderd euro. Kies tussen de kleurstellingen zwart, wit en goud.

Samsung Galaxy Fit3

De Samsung Galaxy Fit3 schaf je voor minder dan zes tientjes aan! Dit goedkope sporthorloge is te koop in de kleurstellingen zwart, zilver-wit en roze. Ondanks zijn lage prijskaartje toont het langwerpige 1,6inch-amoledscherm van 256 × 402 pixels diverse gegevens. Zo zie je hoeveel stappen je hebt gezet. De achterzijde van de horlogekast heeft ook nog sensoren om je bloedzuurstof en hartslag te meten. Druk aan de zijkant op de homeknop en kies uit ruim honderd sportoefeningen. De Galaxy Fit3 analyseert desgewenst ook je slaapgedrag. Maak je onverhoopt een lelijke uitglijder? Dankzij valdetectie schakelt de polsassistent jouw SOS-contactpersonen in.

Dit lichtgewicht sporthorloge van 18,5 gram neem je overal mee naartoe. De IP68-gecertificeerde behuizing is namelijk volledig waterdicht. Verbind de Galaxy Fit3 via bluetooth met een smartphone voor nog meer functies. Je kunt dan bijvoorbeeld de muziekweergave bedienen en zien wie er belt. De smartwatch toont ook inkomende berichten. De oplaadbare batterij van 208 mAh gaat op een enkele acculading volgens Samsung tot dertien dagen mee.

▼ Volgende artikel
5 redenen waarom citroen een wondermiddel is voor je was én je wasmachine
© africaimages.com (Olga Yastremska, Africa Images)
Huis

5 redenen waarom citroen een wondermiddel is voor je was én je wasmachine

Dat een wasmachine zonder moeite vuile was schoon krijgt, spreekt voor zich. Toch kan een kleine natuurlijke hulp extra verschil maken. Geen chemisch middel, maar iets wat je waarschijnlijk al in huis hebt: citroensap. Dat zorgt voor een frissere was, een schonere trommel en een beter onderhouden machine.

In dit artikel

Citroensap blijkt niet alleen handig in de keuken, maar ook tijdens het wassen. Het natuurlijke zuur (citroenzuur, inderdaad) helpt zeepresten verwijderen, voorkomt geurtjes en houdt wit echt wit. Daarnaast verzacht het hard water en maakt het wasverzachters overbodig. In dit artikel lees je hoe en waarom citroen zo'n krachtig hulpmiddel is voor zowel je kleding als je wasmachine.

Lees ook: Vetluis in je wasmachine? Zo kom je er vanaf!

Hoewel de meeste wasmachines hun werk prima doen, kun je ze met een beetje citroensap een handje helpen. Dit natuurlijke zuur werkt verrassend effectief tegen vuil, kalk en bacteriën. Hieronder lees je vijf manieren waarop citroen je was én je machine schoner, frisser en duurzamer maakt.

1. Verwijdert zeepresten

Na het wassen blijft er vaak wat wasmiddel of wasverzachter achter in de trommel of in je kleding. Het gevolg? Je wasmachine kan muf gaan stinken, net zoals de was die uit zo'n machine komt. Een scheutje citroensap in het bakje voor de wasverzachter helpt om die resten los te weken. Zo blijft je wasmachine schoon en ruikt je was écht fris.

2. Neutraliseert nare geuren

Citroensap werkt licht antibacterieel en neutraliseert geuren. Dat is vooral handig bij sportkleding, handdoeken of keukenlinnen dat snel minder fris ruikt. Citroen maakt je was dus niet alleen schoner, maar ook frisser.

©africa-studio.com (Olga Yastremska and Leonid Yastremskiy)

3. Werkt tegen hard water

Woon je in een gebied met hard water, dan merk je dat wasmiddel minder goed schuimt en kleding stugger aanvoelt. Citroenzuur bindt kalkdeeltjes, waardoor het water zachter wordt en het wasmiddel beter zijn werk doet. Zo bescherm je zowel je kleding als de binnenkant van je machine tegen kalkaanslag.

🍋 Onderhoudstip: laat eens per maand een lege wasmachine draaien op 60 graden met een scheut citroensap. Zo voorkom je kalkaanslag en blijft de binnenkant fris.

4. Houdt wit écht wit

Citroensap heeft een mild blekend effect dat witte kleding helderder maakt zonder het risico van verkleuring. Vooral fijn voor lakens, T-shirts en handdoeken. Anders dan chloor is citroensap veilig voor de meeste stoffen* en vriendelijker voor je huid én het milieu.

*Maar niet voor alle stoffen

Citroensap is een zuur en daardoor minder geschikt voor zijde, wol en linnen. Deze natuurlijke vezels reageren gevoelig op zuren en kunnen door herhaald contact hun glans of structuur verliezen. Ook bij kleding met metalen details (zoals ritsen of knopen) is voorzichtigheid geboden, omdat zuur oxidatie kan versnellen.

5. Zorgt voor zachtere kleding

Heb je snel last van wasverzachter of vind je de geur te sterk? Citroensap verzacht het water op een natuurlijke manier, zonder kunstmatige toevoegingen. Zo blijft je kleding soepel en zacht, ook zonder de synthetische stoffen die in veel wasverzachters zitten. Dat is prettiger voor gevoelige huid én beter voor het milieu, omdat er minder chemische resten in het afvalwater terechtkomen.

Zo gebruik je het: voorbeeldwas

Wil je het zelf proberen? Zo doe je dat veilig:

Voor een volle trommel witte of lichte was giet je een half kopje citroensap (ongeveer 120 ml) in het vakje van de wasverzachter. Gebruik je gewone wasmiddel, maar sla extra bleek of wasverzachter over. Was op 40 graden en haal je was direct uit de machine zodra het programma klaar is.

Tot aan de laatste druppel uitgeperst...

.. dat lukt alleen met een goede juicer (ook voor sinaasappels!)