MQTT

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.

1-to-1 verbindingen worden al snel complex

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. 

De Broker maakt het leven gemakkelijker

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.

Nieuw device aanmaken

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

Device details instellen

Device aangemaakt

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.

Token aanmaken

Token aangemaakt

Klik op het oog icoon om het Token te bekijken.

Bekijk Token informatie

Jouw Device Token

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.

Activeer Wi-Fi door op de knop te drukken

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.

Live Inspector

Wacht vervolgens tot je de data ziet toekomen.

Visualisatie van connectie en berichten ontvangen door de Broker

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.

Actie toevoegen

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.

Actie creëren

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

Actie aanpassen

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.

Raw Payload

We kunnen nu een Dashboard aanmaken.

Dashboard

Om een Dashboard toe te voegen klik je op het plusje naast Dashboards.

Dashboard aanmaken

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

Maak dashboard aan

Klik op Add widget om een widget toe te voegen.

Widget toevoegen

Als voorbeeld kiezen we Display als widget.

Widget selecteren

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

Widget instellen

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

Visuele weergave van CO2 waarde gemeten door CO2 sensor

We kunnen nu hetzelfde doen voor temperatuur en vochtigheid.

Klik rechtsbovenaan op het plus icoontje.

Widget toevoegen

We kiezen dit maal voor een Solid widget.

Soldi widget toevoegen

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 widget aanmaken

Temperatuur is nu toegevoegd aan ons dashboard.

Temperatuur widget toegevoegd

En als laatste voegen we nog de vochtigheid toe.

Vochtigheid widget toegevoegd.

Vanaf kan je uzelf laten gaan 🕺