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
Trage computer? Zo versnel je de opstarttijd van Windows 11
© MG | ID.nl
Huis

Trage computer? Zo versnel je de opstarttijd van Windows 11

Een minuut wachten kan eindeloos lijken, bijvoorbeeld tussen het indrukken van de aanknop en het uiteindelijk erschijnen van het Windows-bureaublad. Met de juiste aanpassingen kun je die wachttijd vaak flink verkorten. En wie wil er nu niet sneller uit de startblokken?

Het is je vast al opgevallen dat je Windows-pc na maanden intensief gebruik trager opstart dan in het begin. Dat lijkt vreemd, maar is goed verklaarbaar: je hebt waarschijnlijk allerlei programma’s geïnstalleerd die automatisch met Windows mee opstarten. Deze automatisch opstartprogramma’s controleren en uitschakelen is dan ook een belangrijke optimalisatiestap.

Maar daarnaast bestaan nog wel andere trucs om de opstarttijd te verkorten. Staat Windows nog op een klassieke harde schijf, dan kun je de tijd vaak makkelijk met een minuut of meer inkorten door over te stappen op een ssd (Solid State Drive). Dit kost wel wat tijd en geld, maar levert meteen een flinke tijdwinst op. En als we het toch over drastische ingrepen hebben: ook een volledige, schone (her)installatie van Windows (op dezelfde schijf) geeft je pc gegarandeerd een snellere start.

Draait Windows al op een ssd en wil je geen nieuwe installatie uitvoeren, lees dan vooral verder: er zijn ook minder ingrijpende maatregelen die het opstarten van je computer merkbaar versnellen. 

Meten is weten

Hoeveel tijd je met de tips en technieken uit dit artikel precies wint, is lastig te voorspellen, want dit hangt af van meerdere factoren. We raden je aan dit zelf te meten. Dat kan met een stopwatch, maar gespecialiseerde applicaties doen dit nauwkeuriger. Windows Performance Analyzer (https://apps.microsoft.com/detail/9n0w1b2bxgnz) is een optie, maar is erg technisch. Een veel gebruiksvriendelijker alternatief is BootRacer (www.greatis.com/bootracer). Deze app is ook gratis en die kun je na enkele testrondes gerust weer verwijderen. We tonen eerst hoe je BootRacer gebruikt om de opstarttijd(en) te meten, want de tool biedt daarnaast ook enkele optimaliseringsopties.

WPA: een geavanceerd meetinstrument.

BootRacer (meten)

Download de app en pak het zip-bestand uit. Start het uitgepakte exe-bestand en installeer het. Laat de vier opties aan het einde van de setup aangevinkt, rond af met Voltooien en start BootRacer op. Sluit alle andere applicaties, klik op Start en kies bij Perform a full boot time test voor Start Test / Yes. Na de herstart van Windows verschijnt rechtsonder een pop-upvenster met de opstartduur. Standaard meet BootRacer dit bij elke nieuwe Windows-opstart, waarna je via History de opeenvolgende tijden kunt volgen. Deze duur is telkens opgesplitst in drie delen: de eigenlijke boottijd, de wachttijd om aan te melden, en de tijd tussen aanmelding en een gebruiksklaar bureaublad. De BIOS-tijd (Pre-boot) aan het begin zit er niet bij omdat BootRacer begrijpelijkerwijs dan nog niet draait. Tijdens de boottijd laadt Windows de kernel, start essentiële systeemservices en initialiseert stuurprogramma’s. Na je aanmelding worden je profiel, instellingen, de shell (Verkenner), achtergrondprocessen en automatische opstartprogramma’s geladen.

Wil je niet langer dat BootRacer de opstarttijd meet, ga dan naar Options en selecteer op het tabblad Show de optie Disable BootRacer AutoStart in plaats van Every boot.

BootRacer geeft je een mooi beeld van de opeenvolgende opstarttijden.

Automatisch opstarten

Je weet nu hoe je de opstartduur kunt meten en bekijken, dus kunnen we aan de slag om deze te optimaliseren en te verkorten. Vaak win je tijd door enkel noodzakelijke programma’s automatisch met Windows te laten starten. Dit overzicht vind je in het Windows Taakbeheer, bereikbaar via het contextmenu van de startknop. Klik hier op Opstart-apps. Zet overbodige apps (tijdelijk) uit door er met rechts op te klikken en Uitschakelen te kiezen, al blijft het hier gissen hoeveel tijd zo’n app werkelijk kost bij het opstarten.

Daarvoor gebruik je BootRacer, dat ook per app de opstarttijd kan vastleggen. Start BootRacer, ga naar Options, open het tabblad Startup Control, klik op Enable Control en vink Measure program’s startup time en Log history of started apps aan. Bevestig met Save. Na een nieuwe Windows-opstart klik je in BootRacer op History en kies je History of Executed Startup Programs, voor een exacte opstarttijd van elke app, in chronologische volgorde.

BootRacer registreert nauwkeurig de opstarttijd van elke automatisch opstartende app.

Opstart-optimalisatie

Je weet nu precies hoeveel impact elke app heeft op de totale opstarttijd. In BootRacer kun je deze apps niet alleen tijdelijk uitschakelen, maar ook de startvolgorde aanpassen. Open het onderdeel Startup Control voor een overzicht. Verwijder het vinkje om apps uit te schakelen. Klik je met rechts op een app, dan kies je Info om het pad naar het programma te zien of eventueel Delete als je de opstartverwijzing (in het register) helemaal wilt verwijderen. Met de knop Set Order links bovenin bepaal je via de pijlknoppen welke apps eerder of juist later starten. Bevestig je wijzigingen met Finish Reordering.

Je kunt ook de onderlinge opstartvolgorde aanpassen in BootRacer.

Opstart-vertraging

In BootRacer kun je het opstarten van specifieke apps niet uitstellen om sneller je bureaublad te zien, omdat de app pas daarna wordt gestart. Dat kan wel met de gratis HiBit start-up Manager (www.hibitsoft.ir/StartupManager.html). Kies bij voorkeur voor de installeerbare versie, want de portable editie mist enkele opties. Installeer de app en start deze op. Wil je een app later laten opstarten, klik er dan met rechts op, kies Add to Delay en stel de gewenste vertraging in (Hour, Minute, Seconds). Of kies Automatic Delay en bepaal hoeveel procent cpu- en/of schijfbelasting er maximaal mag zijn voordat de app start. Bevestig met OK.

Start-up Manager heeft bij de rubriek Tools ook enkele handige extra’s. Zo meldt System Monitoring zich zodra een nieuwe app met Windows wil opstarten en geeft Boot Optimizer de opstarttijden weer, ook van achtergrondservices (zie ook bij Service-optimalisatie).

Je kunt apps eventueel ook laten opstarten nadat je bureaublad is verschenen.

Functie: ‘Snel opstarten’

Windows heeft een functie ‘Snel opstarten’ die de boottijd verkort. Normaal sluit Windows bij het afsluiten alle apps en logt het systeem de gebruiker uit, waarna bij de volgende start alles opnieuw wordt geladen. Met ‘Snel opstarten’ bewaart Windows de status van de systeemkernel en stuurprogramma’s (in het verborgen bestand c:\hiberfil.sys). Bij een volgende start wordt dit snapshot ingeladen, waardoor Windows sneller opstart. In de meeste gevallen is het zinvol deze functie in te schakelen, behalve bij dual-bootconfiguraties of bij stuurprogramma’s die er niet goed mee werken.

Je beheert dit via de ingebouwde app Configuratiescherm. Ga naar Systeem en beveiliging / Energiebeheer, klik op Het gedrag van de aan/uit-knoppen bepalen en kies Instellingen wijzigen die momenteel niet beschikbaar zijn. Zet een vinkje bij Snel opstarten inschakelen (aanbevolen) en bevestig met Wijzigingen opslaan.

Windows heeft een ingebouwde functie om de opstarttijd wat in te korten. 

Energiemodi

De functie Snel opstarten werkt alleen bij een volledige afsluiting, maar in het venster Energiebeheer kom je ook Slaapstand en Sluimerstand tegen, die je hier meteen ook kunt activeren. Beide energiebesparende modi zorgen voor een nog snellere start.

Bij Sluimerstand (hibernate) schrijft Windows de volledige inhoud van het RAM naar schijf, zodat de pc geen stroom meer nodig heeft. Bij het opstarten hervat je de sessie exact waar je gebleven was, inclusief geopende programma’s. Nog sneller is Slaapstand, waarbij de sessie in het RAM-geheugen blijft, waardoor de pc wel nog een klein beetje stroom verbruikt.

De exacte opstarttijd hangt af van je hardware en opstartapps, maar grofweg kun je het volgende verwachten: volledig afsluiten zonder snel opstarten circa 30 tot 60 seconden, volledig afsluiten met snel opstarten circa 15 tot 30 seconden, sluimerstand circa 10 tot 20 seconden en slaapstand circa 5 seconden.

De energiebesparende modi kunnen je ook flink wat opstarttijd besparen. 

Procesoptimalisatie

Blijft de opstart lang duren, ook nadat je alle overtollige opstart-apps hebt uitgeschakeld, dan moet je dieper graven. Vaak zijn het services en achtergrondprocessen die vertraging veroorzaken, zoals cloud-synchronisatiesoftware, update-taken of diensten van derden.

Met een ietwat botte methode spoor je dit als volgt op. Druk op Windows-toets+R, voer msconfig uit, open het tabblad Services en vink Alle Microsoft-services verbergen aan. Klik op Alles uitschakelen en herstart de pc. Start hij nu merkbaar sneller op, dan veroorzaken een of meer van die processen de vertraging.

Met de Boot Optimizer van start-up Manager (zie bij ‘Opstart-vertraging’) kun je zien hoeveel tijd zulke processen kosten. Klik desgewenst met rechts op een proces en kies Disable om het uit te schakelen (het item kleurt grijs). Later kun je dit met Enable weer inschakelen. Kies Uninstall alleen als je zeker weet dat de software niet nodig is, want hiermee verwijder je deze. De optie Delete gebruik je beter niet, omdat dit enkel het item uit de lijst verwijdert terwijl het proces toch kan blijven opstarten.

Je kunt services ook rechtstreeks beheren in Windows via de ingebouwde app Services. Selecteer een service, klik met rechts en kies Eigenschappen. Op het tabblad Algemeen stel je het Opstarttype in op Handmatig of eventueel op Automatisch (vertraagd starten), zodat de service geen impact heeft tijdens de eigenlijke opstartfase. Bevestig met OK.

Services kun je uitschakelen vanuit Boot Optimizer, maar ook vanuit de Services-module.

Autoruns

Vanuit Taakbeheer en met tools als BootRacer, Boot Optimizer en Services kun je de meeste automatisch startende apps en services beheren. Wil je echt alle autostartpunten van Windows zien, gebruik dan het gratis AutoRuns (https://learn.microsoft.com/en-us/sysinternals/downloads/autoruns), bij voorkeur als administrator. Op het tabblad Everything zie je alle opstartpunten in één overzicht en beheer je ze via het contextmenu. Met Jump to Entry spring je direct naar de locatie vanwaar ze worden gestart en met Delete verwijder je de opstartverwijzing uit Windows. Houd er rekening mee dat dit niet eenvoudig terug te draaien is, tenzij je de koppeling handmatig herstelt.

Autoruns lijst letterlijk elk mogelijk opstartpunt van Windows op.

Opstartuitstel

Je hebt de totale opstarttijd waarschijnlijk al flink teruggebracht, maar er zijn nog extra ingrepen mogelijk. Mogelijk zag je in BootRacer een melding over een ‘Explorer start-up Delay’ van 10 seconden voorbij komen. Windows bouwt deze vertraging namelijk standaard in, zodat essentiële systeemdiensten rustig kunnen starten, maar op een modern en snel systeem is dit meestal niet nodig. In BootRacer kun je dit alleen met de betaalde Pro-versie uitschakelen, maar via het register kan het ook gratis.

Druk op Windows-toets+R, voer regedit uit en navigeer naar HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer. Klik met rechts en kies Nieuw / Sleutel, geef deze de naam Serialize. Klik met rechts op deze nieuwe sleutel en kies Nieuw / DWORD (32-bits)-waarde. Noem deze StartupDelayInMSec en laat de waarde 0 staan. Sluit Regedit en herstart je pc.

Met een registeringreep kun je nog eens tot tien seconden besparen.

Auto-doorstart

Wanneer je in BootRacer de totale opstartfase bekijkt, zie je mogelijk ook een ‘Password timeout’, de tijd dat Windows wacht tot je je wachtwoord hebt ingevoerd. Zonde van de verloren tijd, maar als je de enige gebruiker van de pc bent, kun je Windows ook automatisch laten doorstarten.

Druk op Windows-toets+R, typ netplwiz en klik op OK. Verwijder het vinkje bij Gebruikers moeten een gebruikersnaam en wachtwoord opgeven […]. Bevestig met OK en vul het wachtwoord in van het gewenste account.

Zie je deze optie niet, dan gebruik je waarschijnlijk een Microsoft-account. Wil je geen lokaal account aanmaken, dan omzeil je dit als volgt. Ga opnieuw naar Uitvoeren en voer regedit uit. Navigeer naar HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device. Dubbelklik in het rechterdeelvenster op DevicePasswordLessBuildVersion en zet de waarde op 0 (in plaats van 2). Na een herstart van je pc zou de optie alsnog zichtbaar moeten zijn.

Als enige gebruiker kun je wellicht ook zonder aanmeldwachtwoord leven. 

UEFI/BIOS

Hoewel tools (zoals BootRacer) de opstarttijd van het UEFI/BIOS niet kunnen meten, kan deze fase toch ook enige tijd kosten. Hier controleert de firmware van je moederbord de hardware en start zij het verdere proces. Met enkele instellingen kun je de opstarttijd wellicht iets verkorten.

Om in het UEFI/BIOS te komen, druk je direct na het aanzetten van de pc op een toets als F10, F2 of Del (zie je systeemhandleiding). Zoek daar naar opties als Fast Boot, Quick Boot of Quick Power on Self Test en schakel deze in om bepaalde zelftesten of wachttijden over te slaan. Controleer ook de bootvolgorde: je stelt de Windows-schijf bij voorkeur in als eerste boot device. Vaak kun je ook ongebruikte hardware, zoals bepaalde poorten, uitschakelen, wat soms wat extra tijdwinst oplevert bij de initialisatie.

Je checkt ook even enkele instellingen in het UEFI/BIOS, zoals Fast boot.

▼ Volgende artikel
Resident Evil Village en meer titels komen naar PlayStation Plus-gamecatalogus
Huis

Resident Evil Village en meer titels komen naar PlayStation Plus-gamecatalogus

Sony heeft bekendgemaakt welke spellen deze maand aan de gamecatalogus voor PlayStation Plus Extra- en Premium-leden worden toegevoegd, en Resident Evil Village is er een van.

Nieuw op ID: het complete plaatje

Misschien valt het je op dat er vanaf nu ook berichten over games, films en series op onze site verschijnen. Dat is een bewuste stap. Wij geloven dat technologie niet stopt bij hardware; het gaat uiteindelijk om wat je ermee beleeft. Daarom combineren we onze expertise in tech nu met het laatste nieuws over entertainment. Dat doen we met de gezichten die mensen kennen van Power Unlimited, dé experts op het gebied van gaming en streaming. Zo helpen we je niet alleen aan de beste tv, smartphone of laptop, maar vertellen we je ook direct wat je erop moet kijken of spelen. Je vindt hier dus voortaan de ideale mix van hardware én content.

Het lijkt geen toeval dat de game naar de catalogus komt, want eerder bleek al dat Village deze maand ook op Xbox Game Pass verschijnt. Daarbij zal eind februari het negende deel in de reeks, Resident Evil Requiem, uitkomen, dus dit is het ideale moment om nog even het geheugen op te frissen met Village, dat het achtste deel in de horrorfranchise betreft.

Deze games komen op 20 januari naar PS Plus Extra en Premium:

Andere spellen die vanaf 20 januari worden toegevoegd, zijn onder andere Like a Dragon: Infinite Wealth, A Quiet Place; The Road Ahead, de oorspronkelijke Ridge Racer en Art of Rally. Voor de duidelijkheid: de moderne spellen op onderstaande lijst zijn speelbaar voor alle PlayStation Plus Extra- en Premium-leden, de klassieke game is alleen voor Premium-leden bestemd.

  •        Resident Evil Village (PS5 / PS4)

  •        Like a Dragon: Infinite Wealth (PS5 / PS4)

  •        Expeditions: A MudRunner Game (PS5 / PS4)

  •        A Quiet Place: The Road Ahead (PS5 / PS4)

  •        Darkest Dungeon 2 (PS5 / PS4)

  •        The Exit 8 (PS5 / PS4)

  •        Art of Rally (PS5 / PS4)

  •        A Little to the Left (PS5 / PS4)

Deze game komt op 20 januari naar PS Plus Premium:

  • Ridge Racer

Meer informatie over deze games valt te vinden op PlayStation Blog.

View post on X