Mit diesem Demonstrator zeigen wir unser Messuhr Funkmodul M8 und unser externes Display 280.
Beide Messuhr-Module sind zur ständigen Übertragung der Messwerte konfiguriert. Die Messwerte werden an einen MQTT Broker gesendet. Ein Python Programm im Hintergrund übernimmt diese Messwerte, subtrahiert sie und sendet das Ergebnis an das externe Display.

Konfiguration der Messuhr-Funkmodule

Für das Demo-Projekt werden die Messuhrmodule über eine USB Stromversorgung mit Energie versorgt. Genauso wäre eine Energieversorgung über Akku möglich.
Nach dem Einschalten der Module werden diese zunächst über eine Web-Oberfläche konfiguriert. Hierzu stellen die Module einen eigenen Access-Point zur Verfügung „raaare_[mac-adresse]“. Nach der WLAN-Verbindung mit diesem Accesspoint kann über einen beliebigen Browser unter der Adresse http://192.168.33.1 eine Verbindung zum Device aufgebaut werden.
In der Konfigurationsoberfläche werden die wesentlichen Parameter eingestellt.

Die Verbindungsparameter zum WLAN Netzwerk und zum MQTT Broker werden eingegeben.
Es wird ein zyklischer Messintervall von 200ms gewählt. Damit werden 5 Messungen pro Sekunde ausgeführt und zum MQTT Broker gesendet.
Für jede Messuhr wird ein individueller MQTT Topic gewählt, z.B.
rare/gauge1 und rare/gauge2.

Konfiguration des Displays

Ebenso wie die Funkmodule der Messmittel hat auch das Display eine eigene Konfigurationsoberfläche. Nachdem die Stromversorgung zum Display hergestellt ist öffnet auch das Display einen eigenen Accesspoint. Nach der WLAN Verbindung zum Accesspoint erfolgt die Konfiguration durch den Aufruf von „http://192.168.4.1“ im Browser.

Auch hier wird die Verbindung zum WLAN und MQTT Broker eingetragen. Der MQTT topic kann frei gewählt werden.

In unserem Beispiel verwenden wir ein Python Programm um die Messwerte zu übernehmen, zu subtrahieren und dann an das Display zu senden:

import paho.mqtt.client as mqttcli
import time

MQTT_SERVER = "localhost"
MQTT_PORT = 1883
MQTT_SUB = "rare/"
MQTT_CLI = 'mqtt-cli-python-1'
USERNAME = '' # optional
PASSWORD = 'secret'
RECONNECT_RATE = 2
MAX_RECONNECT_COUNT = 999
MAX_RECONNECT_DELAY = 30

# gauge:
#   get data:
# M4: rare/<id>/digimatic/value
# M8: rare/<id>/meas/value     
#   request data:
# M4: rare/<id>/digimatic/request/set   (no payload)
# M8: rare/<id>/in/meas/rep_cnt    payload=1
MQTT_CH1_TOKEN = "gauge1"
MQTT_CH1_ISM4 = False
MQTT_CH1_INTERVAL = True
MQTT_CH2_TOKEN = "gauge2"
MQTT_CH2_ISM4 = False
MQTT_CH2_INTERVAL = True
# display:
# mqtt: free to configure
MQTT_DISP = "rare/display/1/value"

value1 = 0.0
value2 = 0.0
hasValue1 = False

# mqtt client connect
def on_connect(client, userdata, flags, rc):
    if rc == 0 and client.is_connected():
        print("mqtt connected")
        # client.subscribe(MQTT_SUB+'#')
        if (MQTT_CH1_ISM4):
            client.subscribe(MQTT_SUB+MQTT_CH1_TOKEN+'/digimatic/value')
        else:
            client.subscribe(MQTT_SUB+MQTT_CH1_TOKEN+'/meas/value')
        if (MQTT_CH2_ISM4):
            client.subscribe(MQTT_SUB+MQTT_CH2_TOKEN+'/digimatic/value')
        else:
            client.subscribe(MQTT_SUB+MQTT_CH2_TOKEN+'/meas/value')
    else:
        print(f'mqtt connect failed. code={rc}')

# auto reconnect if connection get lost
def on_disconnect(client, userdata, rc):
    print(f'mqtt disconnected, code={rc}')
    reconnect_count = 0
    reconnect_delay = 1
    while reconnect_count < MAX_RECONNECT_COUNT:
        print(f"mqtt reconnecting in {reconnect_delay} sec")
        time.sleep(reconnect_delay)
        try:
            client.reconnect()
            print("mqtt reconnected")
            return
        except Exception as err:
            print("mqtt reconnect failed: {err}")
        reconnect_delay *= RECONNECT_RATE
        reconnect_delay = min(reconnect_delay, MAX_RECONNECT_DELAY)
        reconnect_count += 1
    print("mqtt reconnect failed after {reconnect_count} attempts")
    global doExit
    doExit = True

# mqtt client receiver
def on_message(client, userdata, msg):
    global hasValue1
    global value1
    global value2
    topics = msg.topic.rsplit('/')
    payload = str(msg.payload.decode("utf-8"))
    print(f"mqtt data received: {topics} = {payload}")
    time.sleep(0.03) # secs - avoid "bad char in struct format"
    if ((topics[2] == "meas") or ((topics[2] == "digimatic"))) and (topics[3] == "value"):
        if (topics[1] == MQTT_CH1_TOKEN) and (len(topics)==4):
            try:
                value1 = float(payload)
            except:
                print(f"payload invalid") # e.g. "E:001" if no value available
        elif (topics[1] == MQTT_CH2_TOKEN) and (len(topics)==4):
            try:
                value2 = float(payload)
            except:
                print(f"payload invalid")
        sendToDisp(value2-value1)

def doPublish(topic,value):
    if mqtt.is_connected():
        result = mqtt.publish(topic, value)
        # result: [0, 1]
        status = result[0]
        if status == 0:
            print(f'  mqtt send ok: {topic}={value}')
        else:
            print(f'  mqtt send failed: {topic}={value}')
        time.sleep(0.05) # secs - avoid "bad char in struct format" 0.04

def sendToDisp(value):
    # send value to display
    # mqtt.publish(MQTT_DISP,str(value))
    doPublish(MQTT_DISP,round(value, 3))

print(f"mqtt connect...")
mqtt = mqttcli.Client(client_id = MQTT_CLI)
if USERNAME != "":
    mqtt.username_pw_set(USERNAME, PASSWORD)
mqtt.on_connect = on_connect
mqtt.on_message = on_message
mqtt.on_disconnect = on_disconnect
mqtt.connect(MQTT_SERVER, MQTT_PORT, keepalive=120)
mqtt.loop_start()
time.sleep(1) # secs
print(f"press ctrl-c to stop")
try:
    while not doExit:
        mqtt.loop_forever()
finally:
    print("done.")
    mqtt.disconnect()

Ein kleines Video zeigt den Demostrator in Aktion.

Alte Brücke in Heidelberg beim Halbmarathon 2018

Die Anmeldungen zum Heidelberger Halbmarathon sind abgeschlossen.
Wir freuen uns, dieses jahr wieder ein größeres Team auf die Stecke zu schicken.
Mit unserem Laufteam soll es gelingen, die rAAAreware auch im lokalen Umfeld etwas bekannter zu machen.
Nach den Slogans „Unsere Software läuft schneller“ des BitBumper Ing.Büro Keil und dem „schneller zum Höhepunkt“ unseres trAAAde Produkes haben wir uns dieses Jahr für ein ein lokales Thema auf unserem Laufshirt entschieden:

Es ist vielleicht etwas unspektakulärer als die bisherigen Mottos, soll aber genau den Augenmerk auf unsere Lokalität lenken. Der Aufwärtstrend über dem tripple-A symbolisiert nicht nur unseren wirtschaftlichen Gesamttrend sondern auch die drei fießen Steigungen der anspruchsvollen Heidelberger Laufstrecke. Unser Werbedienstleister hat hier hervorragende Arbeit geleistet.

Wir werden hier in diesem Halbmarathon-Blog nun die letzten Wochen vor dem Lauf weiter Neuigkeiten zum Heidelberger Halbmarathon und unserer Vorbereitung berichten und freuen uns auf einen schönen Lauf am 27. April 2025 auf der malerischen Heidelberger Laufstrecke.

Wir haben wieder einige Läufer im ersten Startblock. Dieser startet um 9:15 in der Friedrich-Ebert-Anlage. Hier der genaue Terminplan für die rAAAreware Läufer und ihre Fans:

Vortag, Samstag, 17-19UhrWer Zeit und Lust hat kommt mit zur Startnummernausgabe.
Wir treffen uns um 18 Uhr vor der neuen Uni und besorgen alle Nummern.
Sonntag, 27. April 2025,
8:45
Eintreffen vor der Uni-Bibliothek
8:50Ausgabe der Laufshirts
8:55Starterbild, Autogramme, Selfies
9:00 – 9:05Warmlaufen
9:05Aufbruch in Startgruppe 1
9:15Start Startgruppe 1
9:20, 9:25Start Startgruppe 2 und 3
9:50Start Bambini Lauf
ab 10:30Treffen im Zielbereich
11:30Gruppenbild „finisher“ auf dem Uniplatz
ab 12:30Gemeinsames Feiern im Steigerweg

Nur noch wenige Stunden bis zum Start. Unser Team ist bereit – leider haben wir einen Ausfall, dafür noch einen kurzfristigen Zugang. Wer sich noch kurzfristig zum Halbmarathon in Heidelberg anmelden möchte kann bei uns noch eine Karte bekommen – ansonsten versuchen wir diese vor Ort direkt auf dem Uni-Platz noch los zu werden. Der Lauf scheint ausgebucht zu sein – wer sich also nachmelden möchte oder spontan entschieden hat mit zu laufen kann auf der vor Ort Tauschbörse sicherlich noch einen Laufplatz bekommen.

Laufschuhe nach der Vorbereitung auf den Halbmarathon Heidelberg
Kein Symbolbild. Unsere Laufschuhe nach der Vorbereitung.

Unsere Laufvorbereitung hätte nicht besser sein können – die Schuhe haben durchgehalten.
Ob sie nun auch noch den Halbmarathon überstehen ist ungewiss.

Pünktlich und vollzählig sind wir angetreten, in besster Verfassung und wie immer hochmotiviert.

Wir hatten alle einen schönen Lauf – für manche etwas kürzer, andere haben die Strecke etwas länger genossen. In unserer Einlaufreihenfolge gab es Änderungen. Erstmalig konnte Richard den Firmenpokal in den Händen halten.

Richard mit dem gold-gelben Siegerpokal, sichtbar entspannt im Ziel. Er kann seinen Erfolg selbst noch nicht fassen.

Vielen Dank an alle Läufer, die großzügigen Sponsoren, unseren Helfern und auch der TSG für den wieder hervorragend durchgeführten Halbmarathon in Heidelberg. Wir sind nächstes Jahr am 26. April 2026 sicherlich wieder dabei!

Weitere Bilder kommen die nächsten Tage.

Unser WLAN Funkmodul für Messuhren und andere Handmessmittel wie Bügelmessschraube oder Messschieber kann mit dem Funkmodul M8 für Verbindungen über WebSockets verwendet werden. Meist werden unsere Datenübertragungsmodule im MQTT Modus eingesetzt. Es gibt jedoch Anwendungsfälle, in denen eine Verbindung über Websockets zweckmäßiger ist. Z.B. wenn aus einer Web-Anwendung oder einem Web-Browser heraus direkt auf ein einzelnes Messgerät zugegriffen werden soll.

Dieses Praxisbeispiel soll zeigen, wie eine WebSocket-Verbindung zum Messgerät hergestellt werden kann.

Das Beispiel besteht aus einer einfachen Webseite / Webanwendung in HTML und Javascript. Über diese einfachen Techniken ist es möglich, direkt auf das Funkmodul zuzugreifen und den aktuellen Messwert sowie Statusinformationen aus der Funk-Messuhr auszulesen. Dies ist im Vergleich zu MQTT ohne zusätzliche Infrastruktur eines Brokers möglich und somit vor allem für kleine, lokale Anwendungen eventuell einfacher umzusetzen als eine MQTT Abfrage.

Web-Oberfläche der Beispielanwendung

Der Quelltext der einfachen Anwendung:

<!DOCTYPE HTML>
<html>
<head>
  <meta name="websocket_test">
  <meta charset="UTF-8"/>
  <style>button{width:140px;height:50px}body{background: #f48f0d;}</style>
  <style>table, th, td { border-collapse: collapse;}</style>
<title>websocket to iot test</title>
</head>
<body style="font-family: arial, sans-serif;">
    <div style="width:500px;border:1px solid black;align:left">
        <form onsubmit="return false">
            Client name (informal): <input type="text" id="txtName" value="Client_1"><br>
            Server: <input type="text" id="txtServer" value="192.168.1.119">
        </form>
        <form onsubmit="return false">
            <button type="submit" id="btnConnect">Connect to IoT device</button>
            <input type="checkbox" id="cbxSsl" name="ssl" checked>
            <label for="cbxSsl">SSL</label>
            <input type="checkbox" id="cbxRaw" name="raw" checked>
            <label for="cbxRaw">Raw</label>
        </form>
        <form onsubmit="return false">
            <button type="submit" id="btnConfigSet" disabled>Set configuration</button>
        </form>
        <form onsubmit="return false">
        <table>
        <tr><td>
            <button type="submit" id="btnRequestMeas" disabled>Request measurements</button>
            </td><td>
            Repeat count:<input style="width:80px;" size="3" type="number" id="txtRepCnt" value="3"><br>
            Interval:<input style="width:80px;" size="6" type="number" id="txtRepMs" value="200">
            </td>
        </tr></table>
        </form>
        <form onsubmit="return false">
            <button type="submit" id="btnRequestMeta" disabled>Request device info</button>
        </form>
        <!-- output form -->
        <form onsubmit="return false">
            <div style="overflow:scroll;height:400px;word-break:break-all" id="divOut">Not connected...</div>
        </form>
        <!-- clear -->
        <form onsubmit="return false">
            <button type="submit" id="btnClear">Clear</button>
        </form>
    </div>
    <script type="text/javascript">
        const elem = id => document.getElementById(id);
        const txtName = elem("txtName");
        const txtServer = elem("txtServer");
        const txtRepCnt = elem("txtRepCnt");
        const txtRepMs = elem("txtRepMs");
        const btnConnect = elem("btnConnect");
        const cbxSsl = elem("cbxSsl");
        const cbxRaw = elem("cbxRaw");
        const btnConfigSet = elem("btnConfigSet");
        const btnRequestMeas = elem("btnRequestMeas");
        const btnRequestMeta = elem("btnRequestMeta");
        const btnClear = elem("btnClear");
        const divOut = elem("divOut");

        class Mdevice {
            constructor() {
                this.connecting = false;
                this.connected = false;
                this.name = "";
                this.ws = null;
            }
            connect() {
                if (this.ws === null) {
                    this.connecting = true;
                    txtName.disabled = true;
                    this.name = txtName.value;
                    btnConnect.innerHTML = "Connecting...<br>"+txtServer.value+"<br>ssl "+
                      cbxSsl.value+": "+(cbxSsl.checked?"on":"off");
                    this.ws = new WebSocket("ws"+(cbxSsl.checked?"s":"")+"://"+txtServer.value+"/"+(cbxRaw.checked?"raw1":"dev1"));
//                    this.ws = new WebSocket("wss://192.168.1.119/dev1");
                    this.ws.onopen = e => {
                        this.connecting = false;
                        this.connected = true;
                        divOut.innerHTML += "<br><p>Connected.</p>";
                        btnConnect.innerHTML = "Disconnect";
                        btnConfigSet.disabled=false;
                        btnRequestMeas.disabled=false;
                        btnRequestMeta.disabled=false;
                        // optional: send something through the websocket 
                        // this.ws.send(this.name + " connected!");
                    };
                    this.ws.onmessage = e => {
                        divOut.innerHTML+="<p>"+e.data+"</p>";
                        divOut.scrollTo(0,divOut.scrollHeight);
                    }
                    this.ws.onclose = e => {
                        this.disconnect();
                    }
                }
            }
            disconnect() {
                if (this.ws !== null) {
                    // optional: send something through the websocket 
                    // this.ws.send(this.name + " disconnect!");
                    this.ws.close();
                    this.ws = null;
                }
                if (this.connected) {
                    this.connected = false;
                    btnConfigSet.disabled=true;
                    btnRequestMeas.disabled=true;
                    btnRequestMeta.disabled=true;
                    txtName.disabled = false;
                    divOut.innerHTML+="<p>Disconnected.</p>";
                    btnConnect.innerHTML = "Connect";
                }
            }
            sendMessage(msg) {
                if (this.ws !== null) {
                    this.ws.send(msg);
                }
            }
        };
        let mdevice = new Mdevice();
        btnClear.onclick = () => {
            divOut.innerHTML ="";
        }
        btnConnect.onclick = () => {
            if (mdevice.connected) {
                mdevice.disconnect();
            } else if (!mdevice.connected && !mdevice.connecting) {
                mdevice.connect();
            }
        }
        btnConfigSet.onclick = () => {
            mdevice.sendMessage("{\"cmd\":\"config\",\"sleep_sec\":13698,\"display_text\":\"MESSAGE\"}");
            divOut.focus();
        }
        btnRequestMeas.onclick = () => {
            if (cbxRaw.checked) {
               mdevice.sendMessage("meas"); // -- opt: csv instead json
            } else {
              mdevice.sendMessage("{\"client\":\""+this.name+"\",\"cmd\":\"meas\",\"rep_cnt\":"+
                txtRepCnt.value+",\"rep_ms\":"+txtRepMs.value+"}");
            }
            divOut.focus();
        }
        btnRequestMeta.onclick = () => {
            // mdevice.sendMessage("1|info|*");
            mdevice.sendMessage("{\"client\":\""+this.name+"\",\"cmd\":\"info\"}");
            divOut.focus();
        }
    </script>
</body>
</html>

Der Quellcode dieses Programmbeispiels kann hier heruntergeladen werden. Dieser Quelltext kann gerne frei verwendet werden (Freeware, OpenSource, Public domain) – allerdings übernehmen wir keine Haftung für die Fehlerfreiheit des Quellcodes oder der Software.

Wir mussten schon erfahren, dass unsere IoT Funkmodule von Interessenten begeistert begutachtet werden – dann aber im Unternehmen nicht eingesetzt werden dürfen, da die lokale IT nur (noch) WLAN mit 5GHz (IEEE 802.11ac) zulässt.

Dies ist ein K.O. Kriterium nicht nur für unsere Module, sondern für die gesamte Digitalisierung im Unternehmen. Entsprechend ist es eine falsche Entscheidung.
Denn: Entweder es wird ein WLAN im 2.4 GHz Bereich betrieben oder es wird nichts mit Industrie 4.0 und IIoT.

Warum diese drastische Einschätzung?

Ganz einfach: Es gibt aktuell noch keine integrierte MCU / SoC mit WLAN auf dem Markt welche 5GHz bedienen kann (Stand August 2021).

Es gibt einige reine Funkmodule mit 5GHz, diese benötigen jedoch eine externe CPU um angesteuert zu werden.
Diese Module sind als Funkmodule in Notebooks und Smartphones vorgesehen, nicht jedoch für den Einbau in kleinste Sensoren für die Messtechnik.
Für einen Betrieb als per Akku betriebene IoT Device sind diese Module nicht nur nicht geeignet sondern praktisch einfach nicht möglich.

Nun könnte man sagen, dass die Hersteller von Modulen vielleicht ja die nächsten Jahre ein 5GHz IoT Modul auf den Markt bringen.
Dies könnte sein. Eventuell werden in einem Zeitraum von 2-5 Jahren sogar mehrere solcher Module erscheinen.
Dies eröffnet das nächste Problem: Soll man gleich auf das erste Modul setzen? Oder kommt in einem halben Jahr vielleicht ein viel besseres?
Und wenn ein besseres kommt: Wie schnell wird das Alte abgekündigt?
Und kommen dann vielleicht die ersten OFDM 5G Module?
Wir haben nun ein „Frosch im heissen Wasser“ Problem.
Es wird nicht möglich sein, den richtigen Moment zum Springen zu finden.
Selbst wenn dann das nächste „perfekte“ Funk-Modul auf den Markt kommt wird es einige Jahre dauern bis die wichtigsten Softwarebibliotheken auf dieses Modul portiert sind und stabil funktionieren. Das Warten auf die 5GHz Technik im IoT Bereich bedeutet also auf jeden Fall ein langes Warten. Dieses Warten ist dabei noch von vielen Unsicherheitsfaktoren umgeben. Es geht bei der Digitalisierung in der Fertigung nicht darum zu warten bis das perfekte System zu 100% verfügbar ist. Es geht viel mehr darum, zu beginnen. Diese Dinge zu digitalisieren die den größten Nutzen in Bezug auf Qualität und Effizienz bieten. In diesem Prozess ist der einzige richtige Moment „jetzt“. Mit den maximalen Möglichkeiten die der Markt zum Zeitpunkt „jetzt“ bietet. In der Form, dass der Prozess gestartet und stetig optimiert und fortgeführt wird.

Ein weiterer Aspekt ist die Sicherheit der Module.
Die kleinen IoT Devices unterstützen „nur“ WPA2/PSK als Basis-Authentifizierung.
Ein aktives Zertifikatshandling kann keines der bekannten MCU Devices.
Auch auf diesem Gebiet muss die Unternehmens-IT also umdenken:
Für die IoT Devices muss eine geeignete Infrastruktur bereitgestellt werden, wenn der Weg in die Digitalisierung in den nächsten Jahren gemeistert werden soll.

Zusammenfassend kann man also sagen:

  • Entweder Papier und ablesen (Stand 19. Jahrhundert),
  • Kabel- oder Bluetooth-Lösung (Stand 20. Jahrhundert und nicht besonders praktikabel),
  • oder eben WLAN mit 2.4GHz Funktechnik (Stand heute).

Die 2.4 GHz Technik ist etabliert, jeder vernünftige Router kann neben 5 GHz auch noch 2.4 GHz.
Hier ein eigenes IoT-WLAN mit einem entsprechenden Gateway zu betreiben kann kein wirkliches Problem darstellen. Im Gegenteil: Ein reines 2.4 GHz WLAN für Messtechnik und Prozesstechnik und ein separates WLAN für Office, ERP und MES sollte in Bezug auf Eigenständigkeit und Übersichtlichkeit eher ein Vorteil darstellen.

Die 2.4GHz Funktechnik wird noch viele Jahre bestehen und ermöglicht Industrie 4.0 jetzt.
Die Alternative bedeutet bestimmt 5-10 Jahre warten – und sich nicht sicher sein, was dann eben kommt.
Diese Zeit hat kein Unternehmen.

Eine geeignetes Sicherheitskonzept für das Netzwerkes mit seinen Teilnehmern bereitzustellen ist eine Herausforderung. Diese Herausforderung kann aber geleistet werden und ist unabhängig von der verwendeten Sendefrequenz der Module.

Aktuell ist es schlicht die Aufgabe der Unternehmens-IT für IIoT mindestens ein 2.4 GHz WLAN Netzwerk mit einfacher WPA2/PSK bereitzustellen.

Sobald ein Bauteil verfügbar ist welches die geforderte Leistung bei 5 GHz bereitstellt werden wir unsere Module natürlich auch gerne auf dieser Technik anpassen und liefern.

Anhang:

Marktübersicht vorhandener WIFI Module:

  • texas instruments (ti) mit CC3200
  • microchip mit SAMW25
  • espressiv mit ESP32/ESP8266

Alle diese Module arbeiten ausschließlich mit 2.4GHz. Viel mehr gibt es leider nicht.
Auch OEM Module wie z.B. das „Würth Calypso WIFI module“ haben einen der oben genannten Chips verbaut.

Unsere Messablauf Software Newim dient zur Verwaltung von Prüfplänen und zum Abarbeiten von Messabläufen in einer Industrie 4.0 Infrastruktur. Die Messmittel können über Module angebunden werden. Werte noch nicht digitalisierter Messmittel können als Handeingabe hinzugefügt werden.

Die Software richtet sich an professionelle Benutzer.

Features

  • Skalierbare Mehrbenutzer Anwendung in einer Client-/Server Architektur.
  • Serverseitige Cloud-Option.
  • MQTT Client zur Ankopplung an MQTT fähige Messgeräte.
  • REST Client zur Automatisierung über ein MES System.
  • Datenhaltung in einer SQL Datenbank.
  • Rich Client auf Windows Betriebssystem.
  • Prüfplanverwaltung mit Import-/Export zu QStat/QDas.
  • Visuelle Prüfablaufmodellierung.
  • Werkerführung zur Prüfplan-Abarbeitung.
  • Stammdatenverwaltung aller relevanter Stammdaten.
  • Schnittstelle zu SAP Stücklisten.
  • Internationalisierte Oberfläche für unterschiedliche Landessprachen und Zahlenformaten.
  • Optionale Versionierung von Prüfplänen.
Beispiel einer visuellen Modellierung eines Prüfablaufs

Die Software mqtt2file ist die Basissoftware zum Betrieb unserer Funkmodule.

Die Software soll 2 Aufgaben erfüllen:

  • Das MQTT Funkmodul bei der ersten Inbetriebnahme zu konfigurieren.
  • Messwerte welche über das WLAN Funkmodul gesendet wurden anzuzeigen und bei Bedarf in eine Datei zu schreiben.

Diese beiden Aufgaben decken den Mindestbedarf an Software ab, um mit einem MQTT Modul zu arbeiten.

Die beiden Aufgaben sind prinzipiell unabhängig. Da MQTT Funkmodule oft in einer übergeordneten und externen MQTT Infrastruktur betrieben werden, wird die Software häufig nur dazu verwendet um die MQTT Module zu konfigurieren und Tests für den Datenempfang mit den Modulen durchzuführen.

Die Software ist kostenlos und lauffähig unter MS Windows und Android. Das Installationspaket bzw. die ausführbare Datei kann auf unserer Service/Downloadseite heruntergeladen werden.

Nach dem Start der Sofware wird die Hauptauswahl zur Konfiguration angezeigt.

Wenn beim Start der Anwendung bereits eine gültige Konfiguration gefunden wird, wird nach einer kurzen Pause direkt in den Mess-Modus geschaltet. Ist noch kein Modul konfiguriert bleibt der Startbildschirm stehen. Die einzelnen Menüpunkt zeigen durch einen grünen Haken dass dieser Punkt bereits konfiguriert und betriebsbereit ist.

Durch Klick auf ein Menüpunkt wird dieser Bereich geöffnet und die darunter enthaltenen Einstellungspunkte werden sichtbar.

Der Menüpunkt „MQTT“

Im Menüpunkt MQTT kann die Verbindung zu einem MQTT Broker eingestellt werden. MQTT kommuniziert über das Internet. Entsprechend wird unter „Server“ die IP Adresse des MQTT Servers eingetragen. Der verwendete Port ist normalerweise 1883. Optional können zur Absicherung der Verbindung die im MQTT Broker vergebenen Zugangsdaten (Benutzername und Passwort) eingegeben werden. In optionalen Firmware-Varianten ist eine zusätzliche Absicherung durch SSL möglich.

Basis Topic definiert den Basis-MQTT-Topic welcher für die Erfassung von Messwerten verwendet wird. Dies ist normalerweise der Topic einer zuvor konfigurierten Messuhr oder anderen IoT-Device.

Der Abschnitt „Messuhr Einrichten“

Eine fabrikneue Messuhr oder anderes MQTT-Funkmodul muss vor der ersten Verwendung dahingehend konfiguriert werden, dass es sich mit einem vorhandenen WLAN Netzwerk und einem vorhandenen MQTT Broker verbinden kann.

Ist diese Verbindung einmal hergestellt, kann jeder Client in dieser MQTT Infrastruktur – auch gleichzeitig – auf die Ergebnisse und Messwerte des Messgerätes zugreifen.

Ebenso über MQTT werden Konfigurationsparameter wie Standby-Zeit oder die Warnmeldung bei niedrigem Batteriestand eingestellt.

Das Handbuch zum Betrieb und zur Konfiguration der MQTT Funkmodule kann hier als PDF Datei heruntergeladen werden.

Problemlösungen

Android: WLAN Verbindung mit dem Modul kann nicht hergestellt werden

Problem: Ein rAAAreware MQTT Modul soll mit dem Programm mqtt2file neu konfiguriert werden. Das Modul wurde bereits in den Konfigurationsmodus versetzt und öffnet nach dem Einschalten einen Access-Point.
Im Programm mqtt2file erscheint die SSID des Netzwerkes nicht in der Liste der erkannten zu konfigurierenden Devices. In der Statusleiste des Smartphones erscheint eine Meldung „Android-System:“ „In WLAN-Netzwerk anmelden“, gefolgt von der SSID der Device zu der verbunden werden soll.

Situation: Das Android Betriebssystem ist schon mit dem WLAN Netzwerk des IoT Device verbunden, jedoch kann das Programm mqtt2file das verbundene Netzwerk nicht abrufen. Damit das Programm die Netzwerke abrufen kann müssen dem Programm die notwendigen Rechte gegeben werden.

Lösung: Gehen Sie im Android System zu „Einstellungen“ > „Apps“ > „mqtt2file“ > „Berechtigungen“. Die vom System gewährten und verweigerten Funktionen werden in einer Liste angezeigt. Erscheinen in der Liste „Zugriff abgelehnt“ Einträge: Tippen Sie auf diese Einträge und wählen Sie für den Eintrag „Immer zulassen“.

Starten Sie das Programm mqtt2file neu. Das verbundene Netzwerk sollte nun in der Konfiguration angezeigt werden, so dass die neue Konfiguration zur Device gesendet werden kann.

Android Installation

Detailinformationen zur Installation auf Android Systemen finden Sie hier.

Wir fertigen eine ganze Reihe von WLAN Modulen für die Industrielle Messtechnik. Die Modulserie M4 ist hier unser Massenmodell für den breiten Einsatz in Verbindung mit Messuhren von Mitutoyo, Mahr oder HELIOS-PREISSER. Die Modulserie ist modular aufgebaut. Zu dem eigentlichen WLAN Modul für das Handmessmittel gibt es weitere Module zur Erweiterung des Funkmoduls. Das WLAN Funkmodul ist fest an der Messuhr angebracht und besitzt einen 10 poligen Systemstecker. An diesen können verschiedene weitere Module angeschlossen werden. Das WLAN Funkmodul selbst ist in verschiedenen Ausführungen erhältlich. Identisch ist jedoch der Anschluss der externen Module über den universellen Systemstecker.

Das Übersichtsbild zeigt die Anschlussmöglichkeiten an das Funkmodul.

Das Display-Modul ist optional und dient dazu, Informationen des Funkmoduls anzuzeigen.
Alle notwendigen Bedienvorgänge können auch über die Servicetaste durchgeführt werden und alle wichtigen Statusinformationen können über Blinkcodes der Status-LED abgelesen werden. Weiter können alle Konfiguration auch per Funk über MQTT ausgelesen werden. Durch die Verwendung des Display-Moduls werden jedoch Service- oder Konfigurationsaufgaben erleichtert. Das Display-Modul ist mit einem USB-Kabel versehen und versorgt das Display als auch das WLAN Modul mit Strom.

Die weiteren Module dienen zur Stromversorgung des Moduls. Der M4 Akku ist ein Schnellwechsel-Akku welcher mit einer Hand einfach und schnell am WLAN Modul aufgesteckt und ausgetauscht werden kann. Der Akku selbst kann in einer Ladestation einfach aufgeladen werden. Die Ladestationen sind in verschiedenen Ausführungen für eine unterschiedliche Anzahl von gleichzeitig ladbaren Akkus verfügbar.

Der M4 Festspannungsanschluss ermöglicht den Anschluss einer externen Stromversorgung. Dies kann eine Spannungsquelle aus dem Prozess oder auch z.B. eine Powerbank als Sammelstromversorgung für mehrere Module auf einer Messvorrichtung sein.

Die Erfolgreiche M4 Reihe für Messuhren der Fa. Mitutoyo, Mahr und Helios-Preisser wurde erweitert auf Messschieber (M4MS), Innenmikrometer und Bügelmessschraube (Mikrometerschraube, M4BM). Das bedeutet, dass auch diese Handmessmittel mit einem Funkmodul der Reihe M4 und allem zugehörigen Zubehör ausgestattet werden können.

Download der Übersicht als PDF Datei.

Anleitung zur Installation unserer MQTT-Programme auf einem Android Smartphone.

Die Installation von Software auf Smartphones mit dem Android Betriebssystem geschieht meist über einen oft über einen Android App Store. Der Store hat die Berechtigungen die dort hinterlegten Anwendungen direkt auf das Smartphone zu laden und zu installieren.
Die Bereitstellung von Anwendungen für Stores wie Google Play sind mit etwas Aufwand verbunden. Zudem sind unsere Anwendungen nicht für einen breiten Markt gedacht, sondern lediglich für die professionellen Anwender unserer Module. Daher ist es für uns zweckmäßiger diese Anwendungen direkt über unsere Internetseite zu beziehen und direkt zu installieren. Dies ist sehr einfach und wird in dieser Anleitung genau gezeigt.

Zuerst wird das Programm in der gewünschten Version auf unserer Service-Seite ausgewählt und angeklickt.

Die Programmdatei (APK-Datei) wird dann vom Browser heruntergeladen.
Nachdem die Datei heruntergeladen wurde kann sie direkt geöffnet werden.
Abhängig vom verwendeten Browser (Crome, Firefox, Opera, Vivaldi,…) kann der Downloadbereich unterschiedlich angezeigt werden. Es ist in jedem Fall möglich, die heruntergeladene Datei zu öffnen.

Wenn von diesem Internetbrowser noch nie eine Anwendung installiert wurde, kann es sein, dass die Installation zunächst verhindert wird. Über die Einstellungen können diese Berechtigungen jedoch einfach vergeben werden.

Auf älteren Android Versionen wird diese Berechtigung pauschal für das gesamte Gerät gegeben (Bereich „Sicherheit“, „Anwendungen aus unbekannten Quellen installieren“). Bei neueren Android-Versionen wird diese Berechtigung nur für eine einzelne Anwendung gegeben.
Nachdem die Einstellung verändert wurde geht es über den „Zurück“ Pfeil oben links wieder zurück zur geplanten Installation.

Nun kann mit der eigentlichen Installation des Programms begonnen werden.

Abhängig von der Android-Version und den Systemeinstellungen kann es sein, dass eine erneute Bestätigung eingeholt wird, dass diese Datei wirklich installiert werden soll.

Zusätzlich kann zur Sicherheit die Datei zu Google zur Überprüfung gesendet werden.

Spätestens nun sollte die Anwendung installiert werden.

Der Installationsvorgang selbst dauert dann nur einige Sekunden.

Nach der Installation kann die WLAN-MQTT-Anwendung direkt geöffnet werden.

Download der Dokumentation und Software zu unseren WLAN MQTT Produkten sowie Links zu Support Informationen.

Erste Schritte

Dies ist zu tun, wenn eine Lieferung von rAAAreware angekommen ist.

Bevor ein Funkmodul eingeschaltet wird bitte zunächst das Messgerät einschalten. Zeigt dies nach dem Einschalten keine Funktion fehlt sicherlich noch die Batterie im Messgerät. Also zunächst bitte die Batterie in die Messuhr, den Messchieber oder allgemein „das Messgerät“ einlegen. Danach erst wie unten in der Schnellstartanleitung oder in der Dokumentation angegeben vorgehen.

Die von uns gelieferten Module M3, M4, M5 oder M6 sind bei der Auslieferung im „Konfigurationsmodus“.
Wenn ein Modul eingeschaltet wird öffnet das Modul einen Access-Point: Über diesen kann die Device dann konfiguriert werden.

WLAN MQTT Module

(M3 und M4 WLAN Messuhr, M5 WLAN Messsschieber, M6 WLAN Bügelmessschraube)

Schnellstartanleitung und Kurzreferenz für M3,M4,M5,M6

Download als PDF Datei:

https://dl.raaareware.de/messuhr/Messuhr_Modul_QuickStart_and_Cheatsheet.pdf

WLAN Modul Dokumentationen

Module M3,M4,M5,M6 und M8

https://dl.raaareware.de/messuhr/Messuhr_Modul_Doku_Benutzer.pdf
https://dl.raaareware.de/messuhr/Messuhr_Modul_Doku_Technik.pdf

M7 – Mqtt Remote Control / WLAN MQTT Fernbedienung: Dokumentation

Firmware für Module M8, M9, M10 (Firmware 2.x) (HTTP,WebSocket,MQTT):

Dokumentation Deutsch

Anleitung Firmware Update

WLAN module documentation in english

https://dl.raaareware.de/messuhr/EN_Wlan_Mqtt_Module_Doc_Technical.pdf

Messuhr Anheber

Messuhr Anheber mit eigener Steuerung (WLAN, Signalleitung, Taster) – Handbuch (PDF, Deutsch)

Display Module

Display280, Messwert Fernanzeige / Remote Display Module

Dokumentation (PDF, Deutsch)

Firmware 1.0.3

Anleitung Firmware Update (PDF, Deutsch)

Produkt-Videos

Der rAAAreware Video-Kanal bei YouTube

Service-Videos

Durchführen eines Werksreset (Konfiguration zurücksetzen) an einem MQTT WLAN Funkmodul M3,M4,M5,M6: Video: Wechsel in den Konfigurationsmodus (YouTube)

Software

MQTT 2 File

Test- und Konfigurationssoftware für unsere MQTT WLAN Module M3, M4, M5, M6.

mqtt2file – Dokumentation Deutsch (pdf)

mqtt2file – Dokumentation Englisch (pdf)

Version / BetriebssystemMS WindowsAndroid 32BitAndroid 64 Bit
1.6 (für Android 14+15 (SDK34)Englisch
1.4 (current version)Deutsch
Englisch
Deutsch
Englisch
Englisch
1.3 (Support Android 11)APKAPK
1.2 (Support Fix-IP Config)ZIPAPK
1.1 (Initial Version)ZIPAPK

Installation des Programms Mqtt2file:
Unter Windows: Einfach in ein beliebiges Verzeichnis entpacken und exe Datei ausführen.
Unter Android: Die apk-Datei wird auf dem Android Smartphone ausgeführt und dadurch installiert. Eventuell muss die Einschränkung zur Ausführung externer Anwendungen deaktiviert werden. Eine genaue Anleitung zur Installation ist hier zu finden.

MQTT 2 Key

Die Software MQTT2Key ermöglicht die Übernahme von MQTT Daten in eine nicht-MQTT-Windows Anwendung wie z.B. LibreOffice oder Excel.

Download der Windows Software

Pressematerial

Firmenlogo rAAAreware GmbH als PNG, TIFF, EPS und JPG.
Das Logo besteht aus 4 Farben:

Rand: Orange = 0xf48f0d (r=244,g=143,b=13)
Schrift: schwarz = 0x0
AAA: Grau = 0x808080
Hintergrund: Weiß = 0xffffff

Für unseren Kunden capricorn group entwickelten wir Komponenten für eine Mess- & Prüfaufnahme.

Prüfaufnahme für ein Carbon Bauteil mit Messuhr und elektrischem Anheber der Messuhr.
Bedienteil der Messuhr-Anheber sowie Messwert-Anzeige der Mitutoyo-Messuhren

Das Projektbeispiel zeigt die Vorrichtung einer Mess- & Prüfaufnahme für ein Carbon Dach.
Die elektrisch gesteuerte Anhebung und Absenkung der Messuhren stellt eine schnelle und exakte Positionierung der Dächer in Fahrzeuglängsrichtung auf der Vorrichtung sicher.
Gegenüber einem manuellen Einmessen ergibt sich dadurch bei jedem Bauteil eine deutliche Zeitersparnis und Fehler werden sofort erkannt.
Die digital erfassten Daten lassen sich in nachgelagerten Systemen zur Qualitätssicherung protokollieren und archivieren.

Über Capricorn

Die capricorn GROUP ist ein Entwicklungsdienstleister mit dem Schwerpunkt Automobilindustrie und Motorsport.

Copyright Hinweise

Für die 4 gezeigten Bilder der Vorrichtung gilt: Diese unterliegen dem Copyright © capricorn. Eine Reproduktion oder Wiedergabe des Ganzen oder von Teilen ist ohne die schriftliche Genehmigung capricorns nicht gestattet.