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.