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
Review Dyson V16 Piston Animal: zuigt beter dan dat hij dweilt
© Rens Blom
Huis

Review Dyson V16 Piston Animal: zuigt beter dan dat hij dweilt

Met de Dyson V16 Piston Animal kun je draadloos stofzuigen én dweilen, mits je het dweilopzetstuk er ook bij koopt. Dyson mikt met deze steelstofzuiger op huishoudens met dieren, maar de antiklitborstels blijken ook handig om lange menselijke haren op te zuigen. Een review van deze twee-in-één-gadget.

Uitstekend
Conclusie

De Dyson V16 Piston Animal is een krachtige en complete steelstofzuiger voor mensen met huisdieren en/of lange haren. De stevige prijs is begrijpelijk, maar niet mals. Dat kan wachten op een aanbieding de moeite waard kan maken. De optionele dweilmond à 149 euro weet ons niet helemaal te overtuigen.

Plus- en minpunten
  • Compleet en licht verbeterd ontwerp
  • Accuduur van 1 uur
  • Zuigt ook (lange) haren effectief op
  • Optionele dweil niet fantastisch
  • Stevige adviesprijs

Dyson staat bekend om zijn premium apparatuur met stevige prijzen, en dat is bij de V16 Piston Animal niet anders. De stofzuiger heeft een adviesprijs van 849 euro. Wil je daar ook de Submarine-dweilborstel bij, dan ben je in totaal bijna 1000 euro kwijt. Dyson kennende zullen deze prijzen binnen een jaar wel enigszins dalen, waardoor de V16 Piston Animal een betere prijs-kwaliteitverhouding krijgt.

Verbeterd ontwerp

Het ontwerp van de stofzuiger steekt goed in elkaar. De kunststof behuizing voelt degelijk aan en heeft een matzwarte afwerking, wat wij persoonlijk mooier vinden dan het grijs van voorgaande Dyson-stofzuigers. De verwijderbare batterij aan de onderkant blijft een goede zet, net als het lcd-schermpje in je gezichtsveld. Op dit scherm zie je hoelang je nog kunt stofzuigen (of dweilen) en via grafieken welk soort vuil je opzuigt.

©Rens Blom

Op het display zie je wat voor soort vuil je opzuigt en hoelang de accu nog meegaat.

Het is fijn dat je het HEPA-filter aan de achterzijde van de stofzuiger kunt losdraaien om hem te wassen. Zo blijft de stofzuiger op de lange termijn zelf zo schoon mogelijk.

©Rens Blom

Het HEPA-filter kan in de wasmachine, zodat je niet steeds nieuwe hoeft te kopen.

Een prettige verbetering in de V16 Piston Animal ten opzichte van vorige geteste Dyson-modellen is het stofreservoir. De draadloze steelstofzuiger heeft een opvangbak van 1,3 liter. Door een hendeltje te gebruiken, pers je het opgezogen vuil samen en raakt het stofreservoir minder snel vol. Wanneer je het stofreservoir boven je vuilnisbak leegt, valt de inhoud netjes naar beneden. Bij andere geteste Dyson-stofzuigers wil het vuil door de kracht van het geopende stofreservoir nog weleens in een cirkel omlaag dwarrelen, waardoor een deel buiten je vuilnisbak belandt. Het is goed om te zien dat Dyson hiervan heeft geleerd.

©Rens Blom

Je kunt de stofzuiger zonder van opzetstuk te wisselen op vloeren en kleden gebruiken.

Haren opzuigen

Effectieve stofzuigers bouwen doet Dyson al jaren, en daar vormt de V16 Piston Animal geen uitzondering op. De ster van de show is een nieuwe brede zuigmond met een speciale structuur om lange haren op te zuigen zonder dat ze vastklitten in de bewegende onderdelen van het mondstuk. Dat mondstuk werkt als een trein, hebben we de afgelopen vier weken gemerkt in een huishouden met twee verharende katten, een nog erger verharende oppashond én een vriendin met lang haar. De V16 Piston Animal zuigt de complete vloer schoon, waarbij delen van kattenbakkorrels, broodkruimels, ander vuil en dus al die haren soepel de stofzuiger in verdwijnen. Dat is best een prettig aanzicht, zeker dankzij het ingebouwde laserlicht dat een deel van je vloer groen laat oplichten om beter te zien wat je opzuigt.

©Rens Blom

De ingebouwde verlichting laat extra goed zien wat je opzuigt.

Slim aan die vernieuwde brede zuigmond is dat hij werkt op harde vloeren én tapijt of een kleed. De stofzuiger past zijn manier van zuigen aan als hij een andere ondergrond detecteert. Je kunt in één moeite dus je hele kamer stofzuigen, wat een fijne manier van werken is die past bij de hoge prijs van de stofzuiger.

Dyson levert de V16 Piston Animal met drie extra opzetstukken. Een langere, smallere zuigmond tovert de stofzuiger om tot een flinke kruimeldief, terwijl de twee-in-één-zuigmond bedoeld is voor tafels, traptreden en andere kleine oppervlakken. Het meest interessant vinden we een kleine zuigmond met dezelfde antiklitconstructie als de grote zuigmond. Deze kleine zuigmond leent zich goed om de bank, stoelen en je matras te stofzuigen.

©Rens Blom

De inhoud van de verpakking, inclusief de prijzige Submarine 2.0-dweilborstel.

De Dyson V16 Piston Animal heeft drie zuigmodi: de zuinige ecostand, de automatische stand en de boost-modus voor maximale zuigkracht. De automatische stand is het nuttigst, want die schakelt automatisch naar boost zodra hij veel vuil tegenkomt. Wij konden de stofzuiger zo'n 60 minuten gebruiken op de automatische stand. De accu opladen duurt grofweg vierenhalf uur.

Dweilen vraagt om versie 3

Voor 149 euro extra koop je de V16 Piston Animal met een dweilmond, door Dyson de Submarine 2.0 genoemd. Dat komt omdat er al een dweil met Submarine 1.0-techniek is, die overigens niet werkt met de V16 Piston Animal. Andersom kun je de 2.0-dweil niet gebruiken met vorige Dyson-apparaten. Makkelijk upgraden of uitwisselen zit er dus niet in.

©Rens Blom

De 2.0-dweilborstel vervangt de Submarine 1.0-versie.

Over de 1.0-dweil waren we niet heel enthousiast, en hoewel de 2.0-versie beter is, blijft het dweilen wat wiebelig en krijgen we snel strepen. De waterbak legen is wel eenvoudiger. Al met al een prima gadget om de vloer even op te frissen, maar een serieuze dweil biedt nog steeds beter resultaat.

©Rens Blom

De dweil reinigt de vloer, maar doet dat nogal wiebelig

Conclusie: Dyson V16 Piston Animal kopen?

De Dyson V16 Piston Animal is een krachtige en complete steelstofzuiger voor mensen met huisdieren en/of lange haren. De stevige prijs is begrijpelijk, maar niet mals. Dat kan wachten op een aanbieding de moeite waard kan maken. De optionele dweilmond à 149 euro weet ons niet helemaal te overtuigen.

▼ Volgende artikel
Nieuw van JBL: open-ear koptelefoon voor kinderen
© JBL | Ali Harper | Stocksy.com
Huis

Nieuw van JBL: open-ear koptelefoon voor kinderen

JBL breidt zijn Junior-serie uit met de JBL Junior FREE, de eerste open-ear koptelefoon van het merk die speciaal is ontworpen voor kinderen. Het model combineert een open ontwerp met ouderlijk toezicht via een app en een maximale geluidssterkte van 85 decibel, zodat kinderen veilig kunnen luisteren zonder volledig afgesloten te zijn van hun omgeving.

De Junior FREE maakt gebruik van JBL's OpenSound-technologie, waarbij geluid via luchttrillingen naar het oor wordt geleid zonder de gehoorgang af te sluiten. Daardoor horen kinderen nog wat er om hen heen gebeurt, wat handig is tijdens huiswerk of onderweg. Tegelijkertijd beperkt de ingebouwde JBL Safe Sound-functie het volume tot 85 decibel, een niveau dat als veilig wordt beschouwd voor jonge oren. Ouders kunnen via de JBL Headphones-app het volume en de luistertijd in real-time volgen, en krijgen dagelijkse of wekelijkse rapporten over gebruik en geluidsblootstelling.

Het ontwerp is afgestemd op kinderen: lichtgewicht, flexibel en gemaakt van zacht siliconenmateriaal. De open-ear constructie rust op het oor in plaats van erin, wat volgens JBL extra comfort biedt bij langdurig gebruik. De grotere knoppen maken de bediening eenvoudig, en de spatwaterdichte behuizing (IPX4) moet de koptelefoon bestand maken tegen dagelijkse ongelukjes. De batterij houdt het tot tien uur vol, en met tien minuten opladen komt daar nog eens drie uur bij.

JBL heeft ook gedacht aan speelse details. De verpakking kan worden omgevormd tot een telefoonstandaard en in de doos zitten stickers waarmee kinderen hun koptelefoon kunnen versieren.

©JBL

De JBL Junior FREE is vanaf november verkrijgbaar in paars, turquoise en perzik. De adviesprijs is 69,99 euro.