Technischer Einstieg in MQTT

Basierend auf die vorgegebene Struktur eines MQTT Clients, als auch die kompakte Größe benötigter MQTT Client Bibliotheken ist der Spielraum der zu verwendenden MQTT Client Lösung sehr begrenzt. Schlussendlich bilden die verfügbaren C bzw. Java Bibliotheken die Grundlage zur Schaffung eines MQTT Client.

Neben dem MQTT Client bildet der MQTT Broker (Server) das massgebliche Bindeglied in einer MQTT basierenden Internet of Things Lösung. Ganz anders als bei dem MQTT Client gibt es eine Vielzahl von verfügbaren MQTT Broker Lösungen.

Sowohl für die Entwicklung von MQTT Client als auch MQTT Broker werden bereits entsprechende Bibliotheken angeboten.

MQTT Entwicklungsumgebung

Sowohl für MQTT Broker als auch für den MQTT Client wird eine Vielzahl von Entwicklungsumgebungen, sowie notwendige Bibliotheken bereitgestellt:

Sprache kompatible Clients / Bibliothek Anmerkung
C liblwmqtt kompakte C Client Lösung
Delphi TMQTTClient Delphi MQTT Client Lösung
Erlang erlmqtt
my-mqtt4erl
Erlang MQTT Client Lösung
Java MeQanTT
mqtt-client
Java MQTT Client Lösung
Javascript Node.js MQTT Client Javascript MQTT Client Lösung basierend auf node.js
IBM Lotus Script® LotusScript Library Bindet MQTT in LotusScript Klassen ein
Lua Lua MQTT Client Library Implementiert MQTT V3.1 in Lua
.Net MQTTDotNet
nMQTT
Implementiert MQTT V3 Client bzw. MQTT V3 für .Net und Mono
Perl net-mqtt-perl
anyevent-mqtt-perl
net-matt-perl erlaub das Einbinden von MQTT Nachrichten
anyevent-mqtt-perl ein MQTT AnyEvent Modul
Python MQTT-For-Twisted-Python Python MQTT Protokoll Client
REXX REXXMQTT REXX Add-On Bibliothek für MQTT Clients
Ruby ruby-mqtt
ruby-em-mqtt
ruby-mqtt Bibliothek für MQTT Client
ruby-em-mqtt MQTT EventMachine Unterstützung

Neben den vorgenannten Entwicklungsumgebungen finden sich noch eine Vielzahl weiterer Entwicklungsumgebungen.

MQTT Broker / Server Lösung

In Anlehnung an die vorgenannten Entwicklungsumgebungen werden zusätzlich folgende MQTT Broker / Server Lösungen angeboten.

  • Really Small Message Broker, ein kompakter MQTT Message Broker unterstützt MQTT V 3 und V 3.1 in C
  • Mosquitto, open source MQTT V 3.1 Broker unterstützt C, Python und Lua
  • EDC Eurotech Everyware Device Cloud, Cloud basierender Service, unterstützt Java, C, sowie weitere optional
  • MQTT.js, MQTT Server und Client Unterstützung für Javascript (node.js)
  • m2m.io, Cloud gestützte MQTT Nachrichtendienst, unterstützt Java, Ruby, C# und C
  • mqtt4erl, MQTT Broker und Client für Erlang
  • ELWIX, Unix basierender MQTT Broker

Wahl der Entwicklungsumgebung

Vorgenannte Bibliotheken als auch verfügbare MQTT Broker / Server erlauben den Einsatz üblicher Entwicklungsumgebungen. Neben der gewohnten Entwicklungsumgebung sollte man jedoch auch weitere Werkzeuge zur MQTT Entwicklung in Betracht ziehen. Grundlegend basiert eine Internet of Things Lösung in Verbindung mit MQTT auf folgender Hardware:

  • IoT Module und Endgeräte
  • an IoT Module angebundene Sensoren, Relais, usw.
  • Router, sowie Netzwerk Peripherie

Im Zeitalter von GCC bzw. Cross Compiling ist der Einsatz von nahezu jedweder Entwicklungsumgebung gegeben. Jedoch entstehen dabei auch oft Probleme die auf externen Plattformen nicht ausfindig zu machen sind.

Des Weiteren bilden Router oftmals ein elementares Bindeglied innerhalb einer Internet of Things Lösung. Router bilden dabei die zentrale Schnittstelle zwischen Anwender als auch IoT Komponenten. Die Firmware derzeitiger Router erlaubt meist nur die Anbindung mittels TCP/IP, alles Weitere muss dann mittels zusätzlichen Komponenten gelöst werden.

In Anlehnung an derzeitig verfügbare Hardware und Firmware Lösungen, sowohl im Bezug von Router als auch Internet of Things Hardware bildet Lua einen sehr großen Entwicklungsspielraum.

Lua findet sich im Bezug von

  • Routern  in LEDE (OpenWRT)
  • IoT Modulen Espressif in NodeMCU
  • IoT Modulen und weiterer Hardware als eLua (embedded Lua)

Die Basis bildet dabei größtenteils ein Linux Derivat als Betriebssystem in Verbindung mit entsprechenden C bzw. Lua Compiler.