Over MQTT (eigenlijk is die naam een afkorting, maar iedereen noemt het zo) heb ik het in de vorige aflevering van deze serie al gehad. Dit protocol heeft verschillende interessante eigenschappen voor toepassingen, waarbij meerdere dataproducenten (sensoren e.d.) en dataconsumenten (PC’s, smartphones) betrokken zijn. Bovendien wordt het ondersteund door een krachtige open-source-community.

Er zijn twee officiële websites voor ontwikkelaars: ten eerste http://mqtt.org waar we onder meer de specificatie kunnen downloaden. En ten tweede www.eclipse.org/paho, de website van het Eclipse Paho-project. Die wordt beheerd door de Eclipse IOT Working Group, waar interessant genoeg ook bedrijven als Cisco, Huawei en Bosch aan mee doen. Men ondersteunt hier MQTT-implementaties in diverse programmeertalen.

Mijn belangstelling was gewekt; ik wilde het protocol nu ook zelf uitproberen. Gelukkig zijn er al enkele werkende MQTT-brokers beschikbaar om mee te testen, alles natuurlijk in „de wolk“. Ik heb gekozen voor de testserver van Mosquitto (http://test.mosquitto.org), maar er zijn ook andere. Bijna altijd staat in de documentatie dat de server niet misbruikt mag worden, en een terechte waarschuwing: iedereen kan alles meelezen!

Dat maakt voor ons niet uit; wij willen gewoon eens een paar berichten van een (zelf geprogrammeerde) MQTT-client verzenden en weer ontvangen. We beginnen gewoon met een PC als platform. Op de pagina’s van Paho zijn open source-bibliotheken voor Java, Javascript, Python e.d. beschikbaar. Ik heb de M2Mqtt-library voor C#/. NET gekozen. Hier staat de documentatie om ermee aan de slag te gaan:
www.eclipse.org/paho/clients/dotnet/
www.hivemq.com/blog/mqtt-client-library-encyclopedia-m2mqtt
Ook op de officiële MQTT-pagina’s wijzen weblinks soms in het niets, daarom hier ook nog een directe weblink naar de sourcecode bij Github:
http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.m2mqtt.git/

De download is een Visual Studio Solution (projectmap) die we met het gratis te downloaden IDE Visual Studio Community 2015  kunnen openen. Om te beginnen moeten we een project aanmaken in deze Solution. Dit krijgt dan de gebruikersinterface en de toepassingscode voor de zelf geprogrammeerde client. Dan voegen we aan dit nieuwe project een verwijzing naar de M2Mqtt-library toe en maken de daarin beschikbare functies toegankelijk met de volgende statements

using uPLibrary.Networking.M2Mqtt;
using uPLibrary.Networking.M2Mqtt.Messages;

in de code.

Het eigenlijke programmeren met deze bibliotheek volgens de gebruiksaanwijzingen is goed te doen. U kunt de complete Solution downloaden met de link onderaan dit artikel. Ik heb ook de uitvoerbare toepassing in een map ingepakt (deze heeft het . NET Framework 4.5 nodig als runtime-omgeving. Op veel PC’s is dat al geïnstalleerd, maar het kan ook gratis worden gedownload).

Mijn test-client kan zijn eigen berichten ontvangen, als we in de beide topic-velden hetzelfde sleutelwoord invullen en dan op de button „Subscribe“ drukken. Voer een tekst in in het veld „Text to publish“ en druk op de button „Publish“. Het bericht gaat dan het netwerk op en verschijnt met een klein vertraging onderaan in het veld „Received text“. Als we dezelfde client openen op verschillend PC’s, kunnen we over en weer kleine berichtjes uitwisselen. Ik kon probleemloos berichten van ons hoofdkantoor naar mijn werkplek thuis sturen en ook chatten met een collega chatten (het is dan handig om als „Topic to publish“ je eigen voornaam in te voeren en als „Topic to subscribe“ de voornaam van de ander).

Zo’n broker op het net is een heel stuk eenvoudiger dan thuis een eigen webserver opzetten, een vast IP-adres gebruiken, de router configureren voor inkomend verkeer enzovoort enzovoort.
En succesjes smaken naar meer... Volgende keer gaan we verder!