Installation und Betrieb eines MQTT Brokers (Server) auf Android

Einleitung

Die Kommunikation bei MQTT wir über einen zentralen Server abgewickelt. Dieser Server steht normalerweise im „Backend“: Über eine Adresse ist er bekannt – alles weitere interessiert den MQTT Anwender dann nicht mehr. In der Praxis läuft dieser Server (MQTT Broker genannt) dann entweder in der Cloud – also einem entfernten Dienst eines Dienstleisters oder auf einem eigenen Server. Der eigene Server kann dann etwas Großes oder Kleines sein. Etwas großes wäre der dicke Server im Keller. Etwas kleines wäre z.B. ein Raspberry Pi welcher mit Open-Software ausgestattet z.B. lokal in einer Fertigungsanlage oder in der Linie positioniert ist.

Es ist jeweils für den aktuellen Anwendungsfall zu entscheiden was das zweckmäßigste ist. Normal ist jedoch, dass viele MQTT Devices über diesen Server kommunizieren und ihre Daten bereitstellen, abrufen und austauschen.

Nun kommen wir zum nicht normalen Fall: Es gibt Anwendungsfälle, in welchen schlicht kein klassischer Server gewünscht ist. Zum Beispiel sollen nur einige Messuhren ihre Werte auf ein Tablet liefern, damit diese dort dann angezeigt und gespeichert werden können.

Messuhren mit anderer Funktechnik wie Bluetooth oder Zigbee scheiden aus, da hier keine universellen Standards eingesetzt werden können und zudem beim Wechseln von Tablet oder Messuhr eine umständliche Kopplung durchgeführt werden muss.

Die Lösung ist es, direkt auf dem Tablet einen MQTT Broker einzusetzen. Mit diesem können sich die Messuhren einfach verbinden. Der auf dem Tablet programmierte Client kann direkt den lokalen Broker abfragen um die Werte der Messuhren zu erhalten.

Vorhandene MQTT Broker

Eine Liste der wesentlichen MQTT Broker-Implementationen ist auf Github zu finden.

Es ist nicht weiter verwunderlich, dass hier kein Broker für Android zu finden ist, da Android ein Client-Betriebssystem ist – und ein MQTT Broker eben eine Server Anwendung.

Eine Suche im Google Playstore listet zwar einige MQTT Broker auf – diese haben jedoch keine allzu guten Reputationen. Unsere Versuche mit diesen Brokern blieben Versuche: Von einem ernsten industriellen Einsatz raten wir ab. Zu unstabil, mit Werbung versehen und fragwürdige Herkunft bei geschlossenen Quellen sind keine Basis für einen industriellen Einsatz.

Der wahrscheinlich am häufigsten verwendete MQTT Broker ist der Mosquitto Broker der Eclypse Foundation. Dieser Broker läuft auf einigen Betriebssystemen – ab liebsten und häufigsten sicherlich auf Linux.

Android ist wie gesagt ein Client-Betriebssystem und der Betrieb eines Servers ist dort nicht unbedingt vorgesehen. Da Android jedoch nicht mehr als ein modifiziertes Linux ist kann der Weg zu einem Linux Server nicht all zu weit sein.

Die Lösung sieht also folgendermaßen aus und ist entsprechend einfach:
Wir installieren eine Linux-Terminal Emulation auf Android. In dieser Emulation können wir dann den Linux MQTT Broker installieren und betreiben.

Mosquitto MQTT Broker Installation auf Android

Hier also die Schritt-für-Schritt Anleitung zur Installation.

Alle eingesetzten Produkte sind OpenSource Programme und kostenlos verfügbar. Die Quellen aller Programme sind frei verfügbar. Alle Programme sind keine Exoten sondern von einer großen Gemeinschaft professionell entwickelte Produkte.

Installation von Termux

Das Programm Termux wird installiert.
Empfohlen über F-Droid oder Google Playstore.

Wenn F-Droid für die Installation gewählt wurde müssen auch die unten aufgeführten Zusatzmodule unter F-Droid installiert werden. Gleiches gilt für den Google Playstore. Die Termix-Installationen müssen also alle aus dem gleichen Store kommen – ansonsten werden Sie in verschiedenen Bereichen installiert und finden sich nicht gegenseitig.


Abhängig von der geplanten Betriebsweise werden zudem Zusatzmodule von Termux benötigt: Soll der Broker über ein Symbol auf dem Startbildschirm (Application Launcher) gestartet werden wird das Zusatzmodul Termux:Widget benötigt. Soll der Broker bei jedem Start des Gerätes automatisch gestartet werden benötigen wir das Modul Termux:Boot. Die Links zu den Modulen in den Android-Anwendungsstores:
Widget: Termux:Widget in F-Droid und Termux:Widget im Playstore.
Boot: Termux:Boot in F-Droid und Termux:Boot im Playstore.

Installation von Mosquitto

Nach der Installation von Termux wird Termux geöffnet / ausgeführt.

Es erscheint eine Eingabeaufforderung. Hier können nun die weiteren Befehle eingegeben werden. Zur Installation von Mosquitto reicht eine Zeile (Return nach der Eingabe):

pkg install mosquitto

Eventuelle Nachfragen alle einfach mit „Return“ bestätigen: Wir benötigen keine besonderen Einstellungen.

Weiter benötigen wir später noch einen Text-Editor, also installieren wir diesen:

pkg install nano

Optional kann natürlich auch ein anderer Editor installiert werden oder mit den entsprechenden Kenntnissen ein Android-Editor verwendet werden.

Ausführen des MQTT Brokers

Damit der Broker einfach ausgeführt werden kann, legen wir entweder eine Verknüpfung auf dem Startbildschirm an oder veranlassen Termux das Laden des Dienstes direkt beim Systemstart.

MQTT Broker über Startsymbol starten

Im Termux Terminal geben wir ein:

mkdir -p $HOME/.shortcuts
nano $HOME/.shortcuts/mosquitto.sh

Im Nano Texteditor dann

mosquitto

Abgeschlossen mit einem „Return“. Den Editor dann mit Strg-X und „Y“ beenden und speichern.

Abschliessend

chmod +x $HOME/.shortcuts/mosquitto.sh

eingeben, damit das Script die Berechtigungen zum Ausführen erhält.

Nun sollte im Android Launcher ein Widget mit dem Namen „Termux“ vorhanden sein. Dieses kann nun auf den Startbildschirm positioniert werden. Nach Auswahl des Widgets kann das angelegte Script „mosquitto.sh“ ausgewählt werden. Dieses Script ist nun dem Widget zugeordnet. Bei jedem Start über das Symbol wird also das Script ausgeführt, welches wiederum den Mosquitto Server ausführt.
Detailinfos zum Widget auf der Termux:Widget Wiki Seite.

Wenn Android Widgets völlig fremd sind hilft eine Suche zu allgemeinen Widget Themen.

MQTT Broker beim Android Systemstart starten

Die oben schon installierte Termux:Boot Anwendung muss nach der Installation einmalig gestartet werden damit die Anwendung sich als Boot-Dienst registriert.

Anschliessend legen wir analog zum Widget-Start ein Mosquitto Start Script im dafür vorgesehenen Verzeichnis ab. Im hier gezeigten Beispiel fügen wir noch die Zeile „termux-wake-look“ ein: Diese verhindert, dass Android in den Standby-Modus wechselt, so dass unser Broker durchgehend läuft.

Im Termux Terminal geben wir ein:

mkdir ~/.termux/boot
nano ~/.termux/boot/mosquitto.sh

Im Nano Texteditor dann

#!/data/data/com.termux/files/usr/bin/sh
termux-wake-lock
mosquitto

Abgeschlossen mit einem „Return“. Den Editor dann mit Strg-X und „Y“ beenden und speichern.

Diese Datei wird nun über Termux:Boot beim Systemstart geladen und ausgeführt und sollte den Mosquitto Broker starten.

1 Kommentar


Comments are closed, but trackbacks and pingbacks are open.