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
Productiever met de muis: zo werk je een stuk efficiënter
© tippapatt | stock.adobe.com
Huis

Productiever met de muis: zo werk je een stuk efficiënter

Efficiënt werken draait niet alleen om software. Soms zit de grootste winst in iets eenvoudigs, zoals hoe je de muis gebruikt. De Windows-muis zit vol slimme functies die de meeste gebruikers nooit opmerken: automatisch scrollen, vensters in lay-outs plaatsen, snel bestanden selecteren, acties aan muisknoppen koppelen…

 De middelste muisklik (scrollwieltje-klik) is een onderschatte snelkoppeling. Klik met het scrollwieltje op een app die vastgemaakt is aan de taakbalk en er wordt meteen een nieuw venster van die app geopend. Handig als bijvoorbeeld Word al actief is en je snel een tweede leeg document wilt openen. Ook in Windows Verkenner werkt dit trucje. Klik met het scrollwieltje op een map en hij opent in een nieuw tabblad. Een tabblad sluiten gaat al even eenvoudig. Klik met het scrollwieltje op het tabblad van Verkenner of de webbrowser en het verdwijnt meteen. Kortom, de scrollwieltje-klik is de snelste manier om tabbladen te openen en te sluiten.

Je kunt met rechtsklikken een map in een nieuw tabblad openen, maar nog sneller gaat het met de scrollwieltje-klik.

Automatisch scrollen

Wist je dat je helemaal niet hoeft te blijven draaien aan het scrollwieltje om door lange webpagina’s of documenten te gaan? Klik ergens op de pagina met het scrollwieltje (middelste muisknop). Er verschijnt een rond pictogram bij de cursor: automatisch scrollen is actief . Beweeg nu de muis lichtjes omhoog of omlaag. De pagina begint automatisch te scrollen. Hoe verder je de cursor van het pictogram af beweegt, hoe sneller de pagina scrollt. Breng je de cursor terug naar het midden, dan vertraagt het scrollen of stopt het helemaal. Ideaal voor lange artikelen, pdf’s of Word-documenten. Als je klaar bent, klik je nogmaals op het scrollwieltje om automatisch scrollen uit te schakelen.

De nieuwe cursor geeft aan dat je automatisch horizontaal en verticaal kunt scrollen.
Muisknoppen aanpassen met XMBC

Heb je jezelf een high-end muis cadeau gedaan, dan krijg je daar meestal bijbehorende software bij waarmee je knoppen en snelkoppelingen kunt configureren. Daarmee kun je de productiviteit van de muis enorm verhogen. Maar ook met een gewone muis kun je verrassend veel aanpassen dankzij X-Mouse Button Control (XMBC, www.kwikr.nl/xmbc). De freewaretool werkt met profielen per programma, zodat je de standaard muisbediening niet verandert. X-Mouse Button Control is een klein maar bijzonder krachtig Windows-programma waarmee je muisknoppen kunt herprogrammeren. Vooral handig voor wie veel aan de pc werkt, games speelt of specifieke software gebruikt met terugkerende handelingen. Enkele voorbeelden van wat je met XMBC kunt doen: een muisklik instellen om met één handeling tekst te kopiëren of plakken; extra muisknoppen simuleren (ideaal voor gamers die geen duimknoppen hebben); een schermafdruk maken via een muisknop; of meteen een screenshot-tool zoals het Knipprogramma starten. De tool is gratis en reclamevrij. Enig minpunt: de interface oogt wat technisch en kan beginners even afschrikken.

Met XMBC kun je toepassingen koppelen aan muisknoppen.

Snap Layouts

In Windows 11 kun je vensters moeiteloos in een vaste indeling op het scherm plaatsen dankzij Snap Layouts. De officiële Nederlandstalige term is Uitgelijnde vensters, maar vrijwel iedereen spreekt van Snap Layouts. In plaats van zelf vensters te verslepen en te schalen, kies je een voorgedefinieerde lay-out: twee vensters naast elkaar, drie of vier vensters in een raster, een asymmetrische verdeling, zoals 1/3 + 2/3 van het scherm. Open een venster dat je wilt plaatsen. Beweeg de muisaanwijzer boven de knop Maximaliseren. Er verschijnt een menu met verschillende lay-outs. Je kunt ook de toetscombinatie Windows-toets+Z gebruiken. Klik op een lay-outzone en het venster wordt daar automatisch in geplaatst. Windows toont vervolgens de andere open vensters. Klik om de resterende zones te vullen. Extra handig is ook de volgende methode. Sleep een venster langzaam naar het midden bovenaan het scherm. Hierdoor verschijnt een raster met alle beschikbare lay-outs. Laat los om het venster vast te klikken. Het is mogelijk om de instellingen aan te passen via Instellingen / Systeem / Multitasking en dan kies je Uitgelijnde vensters. Hier kun je onder andere bepalen of Windows suggesties toont voor het vullen van de andere zones.

Selecteer hoe je de vensters wilt uitlijnen.

Horizontaal scrollen

Werk je in een grote spreadsheet, bewerk je een brede afbeelding of wil je in een video-editor door de tijdlijn bewegen? Dan hoef je niet te mikken op de kleine schuifbalk onderaan het scherm, je kunt ook horizontaal scrollen met het scrollwieltje. Om horizontaal te scrollen met een muis en het scrollwieltje, houd de Shift-toets ingedrukt en scrol daarna omhoog of omlaag met het scrollwieltje. In sommige programma’s, zoals Microsoft Excel, is de sneltoets Ctrl+Shift in combinatie met het scrollwieltje. Scrol je naar beneden, dan verschuift de inhoud van links naar rechts. Scrol je naar boven, dan gaat de inhoud van rechts naar links. Laat je de Shift-toets los, dan werkt het scrollwieltje weer gewoon verticaal.

Met Ctrl+Shift kun je in Excel horizontaal scrollen met het muiswieltje.

Slepen met de rechtermuisknop

We slepen bestanden en mappen bijna altijd met de linkermuisknop om ze te verplaatsen. Maar probeer het eens met de rechtermuisknop, dat geeft je veel meer controle. Klik met de rechtermuisknop op een bestand of map en sleep het naar de gewenste locatie. Wanneer je de muisknop loslaat, verschijnt een snelmenu waarin je kunt kiezen: Hierheen kopiëren, Hierheen verplaatsen, Hier snelkoppelingen maken. Heb je een compressietool geïnstalleerd, zoals 7-Zip of WinRAR, dan verschijnen die opties ook in het menu. Je kunt bovendien meerdere items selecteren en die tegelijk met de rechtermuisknop slepen. Ideaal om in één keer snelkoppelingen op het bureaublad te plaatsen.

Door met rechts te slepen, opent een snelmenu.

Meteen het volledige contextmenu

In Windows 11 is het contextmenu (het menu dat verschijnt bij een rechtermuisklik) vereenvoudigd. Pictogrammen voor Knippen, Kopiëren, Plakken, Naam wijzigen en Verwijderen staan bovenaan en het menu zelf is korter. Dat oogt overzichtelijker, maar soms heb je juist het klassieke volledige contextmenu nodig. Je kunt onderaan op Meer opties weergeven klikken, maar dat kost telkens een extra handeling. Ben je het beu om telkens die extra klik te moeten maken? Houd dan gewoon de Shift-toets ingedrukt en klik met de rechtermuisknop op de map of het bestand. Hierdoor opent direct het volledige klassieke contextmenu waar je toegang hebt tot alle rechtermuisknopopties van Windows.

Links het gewone contextuele menu van Windows 11, rechts het volledige menu.

Vensters maximaliseren en verkleinen

Dubbelklik op de titelbalk bovenaan een venster om een venster te maximaliseren. Staat het venster al gemaximaliseerd? Dubbelklik opnieuw op de titelbalk en het venster keert terug naar zijn vorige formaat. Dit werkt een stuk sneller dan mikken op de kleine maximaliseer-/herstelknop. Je kunt ook dubbelklikken op het pictogram van het venster in de linkerbovenhoek om dat venster meteen te sluiten. Bij sommige moderne Windows 11-apps staat er géén pictogram in de titelbalk en werkt deze truc dus niet. Voorbeelden waarbij het wel werkt: Kladblok, Taakbeheer, register-editor en veel traditionele desktopsoftware. 

Sneller zoomen

Een van de meest onderbenutte functies van de muis is de mogelijkheid om in en uit te zoomen met behulp van het scrollwieltje. Houd de Ctrl-toets ingedrukt en rol met het wieltje omhoog om in te zoomen, rol omlaag om uit te zoomen. Dit werkt bijna overal: op webpagina’s, Word-documenten, Excel-sheets, pdf-bestanden, fototoepassingen en grafische software, Windows Verkenner … Het voordeel is dat je hand op het toetsenbord én op de muis blijft, zonder de workflow te onderbreken. In sommige browsers kun je met Ctrl+0 (nul) altijd terugkeren naar 100 procent zoom. In Microsoft Word werkt Ctrl+muiswieltje zelfs terwijl je een selectie maakt in de statusbalk onderaan, waardoor je extra controle krijgt over de weergave.

Via Ctrl+muiswieltje kun je traploos inzoomen.

Slimmer selecteren

Meerdere bestanden selecteren hoeft geen gedoe te zijn. Windows biedt twee handige methoden. De eerste manier (Shift+klik) gebruik je om een aaneengesloten reeks items te selecteren. Klik op het eerste bestand in de reeks, houd de Shift-toets ingedrukt en klik op het laatste bestand. Alles daartussen wordt automatisch geselecteerd. De tweede manier (Ctrl+klik) dient om meerdere niet-aansluitende bestanden te selecteren. Houd de Ctrl-toets ingedrukt en klik op elk bestand dat je wilt toevoegen. Als je per ongeluk het verkeerde bestand hebt geselecteerd, klik je er nogmaals op terwijl je de Ctrl-toets nog steeds ingedrukt houdt. Vaak is het handig om deze twee methoden te combineren. Veronderstel dat je eerst met Shift-klik een aansluitende reeks bestanden hebt geselecteerd vanaf nummer 7 tot en met 63, maar je wilt bestand 52, 57 en 60 niet in de selectie. Dan kun je met Ctrl-klik deze drie items uit de selectie verwijderen.

Met Shift-klik selecteer je een aaneengesloten reeks bestanden.
▼ Volgende artikel
Pokémon FireRed en LeafGreen komen op 27 februari naar Switch eShop
Huis

Pokémon FireRed en LeafGreen komen op 27 februari naar Switch eShop

Er gingen onlangs al geruchten over, maar nu is het zo goed als zeker: vanaf 27 februari zijn Pokémon FireRed Version en Pokémon LeafGreen Version speelbaar op Nintendo Switch en Nintendo Switch 2 via de eShop.

Na eerdere geruchten zijn beide games nu inmiddels op de Nintendo eShop verschenen: hier en hier. Daarbij kost elk spel 20 euro.

Officieel zijn de Switch-releases van de klassieke games nog niet aangekondigd op moment van schrijven. Op 27 februari is het Pokémon Day, een jaarlijkse viering van alles rondom Pokémon. Het ligt dan ook in de lijn der verwachting dat de Switch-versies van de games op die dag worden aangekondigd en meteen worden uitgebracht.

Volgens de beschrijving op de eShop wordt lokale draadloze multiplayer ondersteund, en zal Pokémon Home op een later moment ook worden ondersteund. Overigens zullen diverse regio's unieke taalversies ontvangen, net als bij het origineel. Dat betekent bijvoorbeeld dat mensen die het spel in de Verenigde Staten kopen, alleen een Engelse taal kunnen selecteren in de games.

Er gingen eerder al geruchten dat de Pokémon-games opnieuw uitgebracht zouden worden om de franchise te vieren. De Pokémon-reeks bestaat dit jaar namelijk dertig jaar.

View post on Instagram
 

Over Pokémon FireRed en LeafGreen

Pokémon Red en Pokémon Blue waren de eerste Pokémon-games die in 1996 verschenen, terwijl FireRed Version en LeafGreen Version uit 2004 afkomstige Game Boy Advance-remakes zijn van de spellen.

In deze Pokémon-games verkennen spelers de originele Kanto-regio, waar men wilde pokémon tegenkomt die men kan vangen, om ze vervolgens in te zetten in gevechten tegen andere pokémon. Spelers nemen het namelijk op tegen ervaren Gym Leaders en proberen de beste pokémontrainer ooit te worden. De FireRed- en LeafGreen-versies van de game voegen ook de nieuwe regio Sevii Islands toe.