MQTT (Message Queue Telemetry Transport) is een machine-to-machine (M2M) data transfer protocol en het leidende messaging-protocol voor het Industrial Internet of Things (IIoT). Hoewel er momenteel een aantal concurrerende IoT-technologieën en protocollen in het spel zijn, zijn de extreem lichtgewicht overhead (2-byte header), het publish/subscribe model en de bidirectionele mogelijkheden van MQTT bij uitstek geschikt om te voldoen aan de eisen van industriële besturingssystemen.
MQTT is een publish/subscribe protocol wat het mogelijk maakt voor edge-of-network apparaten (bijvoorbeeld onze CO2 sensor) om te publiceren naar een broker. Clients (bijvoorbeeld een web applicatie) verbinden met deze broker, die vervolgens bemiddelt tussen de communicatie van de twee apparaten. Elk apparaat kan zich inschrijven of registreren voor bepaalde onderwerpen.

In tegenstelling tot de gebruikelijke poll/response modellen van veel protocollen, welke de neiging hebben om onnodig data verbindingen te verzadigen met onveranderlijke data, maximaliseren publish/subscribe modellen juist de beschikbare bandbreedte.
MQTT is gemaakt met het doel om data te verzamelen van zoveel mogelijk apparaten en om deze data vervolgens te transporteren naar een IT-infrastructuur. Het is lichtgewicht en dus ideaal voor het monitoren op afstand, vooral bij M2M-verbindingen waar een kleine footprint code vereist is of waar de netwerkbrandbreedte beperkt is.
Omdat er vele data genererende sensors kunnen zijn en er meestal ook vele ‘afnemers’ zijn, zou het aantal verbindingen enorm oplopen als deze 1 op 1 verbonden zouden zijn. Om dit te voorkomen heeft MQTT een middenlaag; de broker, hierboven aangegeven door de ronde vorm.
Simpelweg komt het er op het volgende neer:
- Een sensor (die noemen we vanaf nu de Publisher Client) meldt zich bij de broker en zegt ‘onder deze naam ga ik de komende tijd data aanbieden, succes ermee’. De naam waaronder hij zijn data gaat inleveren noemen we het ‘Topic’. Verder merken we op dat de Publisher-client maar 1 connectie heeft te onderhouden (nl met de broker) ongeacht waar de data uiteindelijk uitkomt of nodig is.
- Een of meer afnemers (dashboard, loggende database etc), die we ‘Subscriber client’ noemen, melden zich bij de broker en zegt/zeggen ‘ik wil graag een ‘abonnement’ op dit specifieke ‘Topic’. Vanaf dat moment zal de broker elke keer als er nieuwe data is binnen dit topic deze aan alle ‘geabonneerden’ meedelen.

Verder merken we op dat door de toevoeging van de broker zowel de Publisher client als de ‘subscriber client’ maar 1 connectie heeft te onderhouden (nl met de broker) ongeacht het aantal sensoren of het aantal plaatsen waar de data uiteindelijk nodig is.

Hoe web-dashboard maken
Uit bovenstaande uitleg blijkt dat we drie onderdelen nodig hebben. Een Publisch Client (onze CO2 sensor uiteraard), een Broker en een Subscribing Client (het dashboard).
Als dashboard and Broker gaan we gebruik maken van Tago.io.
Tago.io
Indien je nog geen Tago.io account heb, maak deze dan eerst aan (gratis account mogelijk). Eens deze aangemaakt is, maak je een nieuw Device aan.

Geef jouw device een naam, zet Payload als JSON en klik Create my Device.


Onder General Information tab kan je een Token aanmaken. Dit Token ga je nodig hebben om de CO2 sensor in te stellen.
Vul een Token Name in en klik op Generate.


Klik op het oog icoon om het Token te bekijken.


Bovenstaand Token gaan we nodig hebben om onze CO2 sensor in te stellen.
Publisch Client
De CO2 sensor heeft Wi-Fi aan boord en MQTT ondersteuning (beide staan standaard uit). We moeten beide dus activeren. Om deze te activeren druk je op het knopje rechts van de USB connector. De CO2 sensor maakt nu een nieuw Wi-Fi netwerk aan met de naam (SSID) operame-xxxx (xxxx is een uniek nummer). Deze naam komt ook op het display.

Verbind nu met dit netwerk (bijvoordbeeld via jouw smartphone of computer). Open vervolgens een webbrowser en surf naar 192.168.4.1. Je krijgt volgend scherm te zien.

Zet Wi-Fi vinkje aan en vul SSID en wachtwoord in van jouw Wi-Fi netwerk (het Wi-Fi netwerk waarmee je de CO2 sensor wilt verbinden).
Zet vinkje bij MQTT ook aan en vul Tago.io Broker informatie in.
- Broker: mqtt.tago.io
- Broker TCP-poort: 1883
- Gebruikersnaam MQTT: Token
- Paswoord MQTT: jouw device token aangemaakt in Tago.io
We moeten enkel nog de topics ingeven. Op zich ben je vrij om eender welke naam aan een topic te geven. Maar omdat je deze later moet gebruiken in Tago.io hou je deze best eenvoudig.
- Topic voor CO2: co2
- Topic voor temperatuur: temp
- Topic voor vochtigheid: hum
Indien je temperatuur en vochtigheid ook wilt doorsturen dan moet je vinkje voor Activeer MQTT voor temperatuur en luchtvochtigheid ook aanzetten.
Klik vervolgens op Opslaan (rechts onderaan) en daarna op Herstarten (links bovenaan). De CO2 sensor zal opnieuw opstarten en data doorsturen naar de Broker.
Live Inspector
Data wordt nu door de CO2 sensor verstuurt via MQTT. Om deze data te visualiseren in Tago.io kan je de Live Inspector gebruiken.
Selecteer jouw device en selecteer de Live Inspector tab. Druk op de groene Play knop.

Wacht vervolgens tot je de data ziet toekomen.

Als je de berichten ziet binnenkomen en de data ziet er correct uit, dan weet je dat de connectie werkt. Maar er wordt nog niets opgeslagen. We moeten nu een Actie (Action) aanmaken.
Actie
Ga hier voor naar Actions en klik op Add Action.

Geef jouw actie een naam. Zet de trigger op MQTT Topic. Kies Insert to Device Bucket als Actie Type. Klik daarna op Create my Action.

Selecteer vervolgens jouw device en voeg de MQTT topics toe. Vergeet niet op Save te drukken om de aanpassingen op te slaan.

Ga nu terug naar jouw device en naar de Live Inspector. Klik terug op de groene Play toets en wacht tot de data binnenkomt.

Je kan nu zien dat de data in een Bucket wordt bijgehouden. Merk ook op dat we de drie verschillende variabelen binnenkrijgen (CO2, temperature en humidity) met hun waarde (value) en eenheid (unit).
Omdat de CO2 sensor de data reeds in Tago.Io formaat doorstuurt, moeten we de data niet meer normaliseren.

We kunnen nu een Dashboard aanmaken.
Dashboard
Om een Dashboard toe te voegen klik je op het plusje naast Dashboards.

Geef jouw Dashboard een naam en kies een Normal dashboard. Klik op Create my Dashboard om jouw dashboard aan te maken.

Klik op Add widget om een widget toe te voegen.

Als voorbeeld kiezen we Display als widget.

Selecteer jouw Device en Variable. Geef het eventueel een gepaste titel en klik op Create.

Jouw widget is nu aangemaakt en geeft de CO2 waarde weer die door jouw CO2 sensor wordt doorgestuurd.

We kunnen nu hetzelfde doen voor temperatuur en vochtigheid.
Klik rechtsbovenaan op het plus icoontje.

We kiezen dit maal voor een Solid widget.

Vul een gepaste titel in, selecteer jouw device en variable en pas eventueel de range aan. Klik op Create om het widget aan te maken.

Temperatuur is nu toegevoegd aan ons dashboard.

En als laatste voegen we nog de vochtigheid toe.

Vanaf kan je uzelf laten gaan 🕺