Unsere WLAN Funkmodule für Messmittel sind hervorragend geeignet, um ein IIoT Infrastruktur für Messmittel aufzubauen. Es gibt jedoch auch Situationen in welchen nur eine einfache, zunächst lokale Übernahme der Messwerte, z.B. auf ein Smartphone, hinreichend ist. Das Smartphone wird somit zur einfachen Fernanzeige für eine Messuhr oder ein anderes Messmittel.

Für diesen Anwendungsfall haben wir die Mobile Anwendung „smart measure display“ entwickelt.

Das Smartphone scannt zur Kopplung der Funkverbindung das Messgerät (Messuhr)
Das Smartphone scannt zur Kopplung der Funkverbindung die Messuhr mit montiertem Funkmodul und aufgedrucktem Barcode
Nach erfolgreicher Kopplung werden die Messwerte auf dem Smartphone angezeigt.
Nach erfolgreicher Kopplung werden die Messwerte direkt auf dem Smartphone angezeigt.

Ohne besondere Konfiguration wird das Messmittel einfach mit dem Smartphone gescannt. Daraufhin wird eine Funkverbindung zwischen dem Smartphone und dem Messgerät hergestellt und der Messwert kann direkt auf dem Smartphone abgelesen und gespeichert werden.

Als Zusatzfunktionen sind implementiert:

  • Überwachung von Bereichsgrenzen und Grenzwerten
  • Automatische, programmierbare Intervallmessung
  • Ferngesteuerte Messauslösung
  • Speichern der Messwerte in einer lokalen Datenbank
  • Weitergabe der Messwerte an ein Backend (SQL, MQTT-Broker, Q-DAS)

Die Anwendung kann kostenfrei (kostenlos) verwendet werden („freeware“) und funktioniert mit unseren beliebten Funkmodulen der Reihe M4 und M8.

Technische Details

Unsere Funkmodule beherrschen verschiedene Protokolle zur Messwertkopplung.

Als professionelles Kopplungsverfahren setzen wir bevorzugt das MQTT Protokoll ein. Dieses IoT Protokoll hat den Vorteil der relativ einfachen Konfigurierbarkeit, verbunden mit der Möglichkeit, eine gesamte Messinfrastruktur aufzubauen. So können z.B. ein Smartphone und gleichzeitig eine Prozesssoftware auf das Messmittel zugreifen um Messwerte abzurufen oder eine Messung auszulösen. Als Nachteil erweist sich, dass diese Infrastruktur vorhanden sein muss. Für eine einfache Messanzeige eines Messwertes auf einem Smartphone kann dies schon überdimensioniert sein.
Daher unterstützen unsere Module der Reihe M8 auch einfache WebSockets als Übertragungsprotokoll. Hierüber kann über eine sehr einfaches Protokoll einfach der Messwert eines Messmittels abgefragt werden.
Die Kopplung erfolgt denkbar einfach:
Ist nur ein Messmittel in der Reichweite des Smartphones wird dieses Messmittel direkt gekoppelt und abgefragt.
Sind mehrere Messmittel vorhanden kann das Messmittel entweder
– manuell durch eine Auswahl am Bildschirm
– durch den Scan eines QR-Codes
gekoppelt werden.

Das im Text verwendete Wort "Q-DAS" ist ein eingetragenes Warenzeichen der Q-DAS GmbH, Eisleber Straße 2, 69469 Weinheim, Germany

Installation und Betrieb eines MQTT Brokers (MQTT Server) auf dem Android Betriebssystem

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 ist für den MQTT Anwender dann nicht mehr interessant. 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 ist meist ein großer Server im Serverschrank des Backends. Ein Server kann aber genauso gut ein Raspberry Pi sein, welcher mit Open-Software ausgestattet z.B. lokal in einer Fertigungsanlage oder in der Linie positioniert ist.

Eine Übersicht über solche klassische MQTT Infrastruktur-Szenarien haben wir Im Artikel „Möglichkeiten einer IoT MQTT Infrastruktur zusammengestellt.

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 soll eine lokale IoT Device Messwerte an ein Smartphone oder Tablet liefern die dort dann angezeigt und gespeichert werden. Dies ist die für MQTT einfachste Konfiguration. In der vor Industrie 4.0 Zeit hätte hier dann vielleicht auch anstatt einem IoT Device auch nur ein Gerät mit Bluetooth oder Zigbee Verwendung gefunden.

Der Einsatz von MQTT bietet jedoch auch in diesem einfachen Anwendungsfall einige Vorteile:

  • deutlich stabilere Funkverbindung und höhere Reichweite (100-300m statt 3-10m!).
  • keine umständliche Kopplung bei Gerätewechel notwendig.
  • einheitliche Weiterverarbeitung der Daten über den offenen MQTT Standard.

Für uns als MQTT Messgerätehersteller (WLAN Handmessmittel) stellte sich für dieses Szenario die Aufgabe einen MQTT Broker auf einem Android Betriebssystem zu betreiben. Dieser Fachartikel beschreibt die Analyse der Möglichkeiten und zeigt eine einfache Lösung des Problems. Die Lösung besteht darin, einen quelloffenen und verbreiteten Linux MQTT Broker auf einem Android Device zu betreiben. Dieser Broker kann dann direkt auf dem Smartphone oder Tablet von einer lokalen Anwendung angesprochen werden um die Messwerte zu verarbeiten.

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.

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.

Über die rAAAreware GmbH

Die rAAAreware GmbH ist ein Dienstleister für IT und Elektronik und ein Hersteller für IoT Devices. Neben Erfahrungen mit vielen Industrie- und Automotive-Protokollen wie CAN, CCP und OPC haben wir uns in den letzten Jahren bei M2M Protokollen immer mehr auf MQTT spezialisiert. Neben der Entwicklung und dem Vertrieb unserer eigenen Produkte für drahtlose Übertragung von Messwerten unterstützen wir Firmen beim Aufbau und Betrieb einer MQTT Infrastruktur und bieten Entwicklungsarbeiten für IIoT Devices z.B. zur Integration kabelgebundener Messtechnik in eine MQTT Architektur.

Rechtliches

Bluetooth ist eine eingetragene Marke der Bluetooth SIG, Inc.
Wi-Fi ist eine eingetragene Marke der Wi-Fi Alliance.