MQTT

Die Verbindung zu externen Geräten kann über MQTT erfolgen. Für jede Runtime wird die Verbindung konfiguriert. Nach dem Erstellen einer Runtime erstellt werden die Verbindungseinstellungen automatisch angezeigt. Sie können diese auch manuell öffnen, indem Sie im Projekt zu den Runtimes navigieren, mit der Maus darüber fahren und das Icon für Verbindungen auswählen.

Neue MQTT-Verbindung erstellen

logiccloud bietet einen eigenen, integrierten MQTT Broker, über den Sie Ihre Verbindungen erstellen können. Sie können aber auch Ihren eigenen Broker anbinden.

logiccloud MQTT-Broker

Klicken Sie dazu auf das Icon für Add logiccloud MQTT connection. Im Dialogfenster können Sie den Namen Connection name, die Client-ID Client ID sowie die Beschreibung Connection description eingeben.

Die Reconnect period gibt an, wie schnell bei einem Verbindungsabbruch eine neue Verbindung versucht wird. Clean bedeutet, dass bei jeder neuen Verbindung eine cleane Session gestartet wird, ohne auf vorherige Wertänderungen im Broker zuzugreifen.

ProtocolHostname und Port werden automatisch erzeugt und können für die Verbindung zum Broker verwendet werden.

Die Client ID sollte für jede Verbindung und jedes Device immer eindeutig sein, da es sonst zu Verbindungsabbrüchen durch den Broker kommen kann.

Nachdem Sie die Verbindung erstellt haben, wählen Sie diese im Gliederungsbaum aus. Sie sehen den generierten Benutzernamen User name und das Passwort Password. Diese können Sie für die Anmeldung Ihrer Devices verwenden.

Installieren Sie die angezeigten Zertifikate auf Ihren Devices, um die Verbindung zu verschlüsseln.

Wenn Sie den logiccloud MQTT Broker nutzen, sollten Sie die Zertifikate auf Ihren Devices installieren, damit durch die verschlüsselte Verbindung kein Sicherheitsrisiko entsteht.

Eigener MQTT-Broker

Die Vorgehensweise ist die gleiche wie bei der Verwendung des logiccloud MQTT Brokers. Klicken Sie auf das Icon Add custom MQTT connection und füllen Sie alle Informationen aus. Zusätzlich muss jedoch das Protocol, der Hostname, der Port sowie die Authentifizierung über User namePassword und ggf. Zertifikate für die Verschlüsselung eingetragen werden.

Die Client ID sollte für jede Verbindung und jedes Device immer eindeutig sein, da es sonst zu Verbindungsabbrüchen durch den Broker kommen kann.

MQTT-Payload definieren

Die MQTT Payload ordnet die MQTT Nachrichten den logiccloud Access Variablen zu.

Dazu muss innerhalb der zuvor erstellten Verbindung über das Icon Add payload eine neue Payload erstellt werden.

Geben Sie dazu den Namen Payload name sowie die Beschreibung Payload description an.

JSON-Payload

Bei der JSON Payload müssen Sie noch den Inhalt der Payload definieren, damit diese von logiccloud verstanden werden kann. In den Auswahlfeldern finden Sie vorgefertigte Templates, um die Payload zu entschlüsseln. Sie können diese verwenden, aber auch eigene Strukturen definieren.

Im unteren Bereich können die Formate getestet werden. Dafür können Sie das Read format definieren, unter Test Read/Write read auswählen und im linken Bereich Ihre JSON Payload hineinkopieren. Sollten SIe Platzhalter mit ##tag## benutzen, können Sie die Beispieltags unter Tag setzen. Im rechten Fenster sehen Sie, welcher Wert aus dem JSON Payload dem definierten Read format entspricht. Entsprechend genauso verhält es sich mit dem Write format.

Die Formate für Lesen und Schreiben müssen identisch sein, damit die Variablen von logiccloud entsprechend verarbeitet werden können. Das bedeutet, dass die Struktur der zu lesenden Payload und der zu schreibenden Payload identisch sein muss. Wenn Sie unterschiedliche Formate für unterschiedliche Variablen benötigen, können Sie mehrere unterschiedliche Payloads definieren und den Variablen zuweisen.

Werte lesen

Beispiele

$[data]
// Beispielpayload
{
    "data": 11.245
}

$[value]
// Beispielpayload
{
    "value": 123.678
}

$[data][##tag##]
// Beispielpayload
{
    "data": {
        "tagName": 34.567
    }
}

Werte schreiben

Beispiele

{"data":##v##}
// Beispielpayload
{
    "data": 11.245
}

{"name": "##tag##","value":##v##}
// Beispielpayload
{
    "value": 123.678
}

{"data": {"##tag##": ##v##}}
// Beispielpayload
{
    "data": {
        "tagName": 34.567
    }
}

MQTT Variablen mappen

Innerhalb der Payload unter Payload Mapping können Sie die Variablen aus Ihren logiccloud Projekten mit den MQTT Tags mappen.

Dazu erstellen Sie ein neues Mapping über das + Icon. Wählen Sie dazu die Variable aus, fügen Sie den Tag Name aus der MQTT Payload ein, wählen Sie den Data Type und das Topic. Der erste Teil des Topics ist immer vordefiniert und besteht aus der Runtime ID und der MQTT Connection. Der Rest des MQTT Topics kann frei definiert werden.

Die Datentypen in MQTT unterscheiden sich etwas von den Datentypen in Structured Text. Sie sollten daher den MQTT-Datentyp wählen, der dem Datentyp von ST entspricht.

Nachdem Sie die Mappings erstellt haben, können Sie Ihre Runtime starten.

Debuggen mit dem MQTT Explorer

Sie können Ihre MQTT Verbindung mit dem MQTT Explorer debuggen. Starten Sie dazu den MQTT Explorer und erstellen Sie eine neue Verbindung.

  • Name kann frei vergeben werden
  • HostPortUsernamePassword aus den MQTT Einstellungen der Runtime übernehmen
  • Validate certificate und Encryption (tls) müssen on sein.

Wenn Sie den logiccloud MQTT Broker verwenden: Unter Advanced müssen Sie noch den Topic hinzufügen. Diesen finden Sie in den Payload Einstellungen. Dieser entspricht auch dem Username. Wichtig ist, dass am Ende noch /# angehängt wird, damit alle Nachrichten innerhalb des Topics und der Subtopics gesehen werden können.

Nun können Sie die Einstellungen Speichern und sich mit dem Broker Verbinden. Es werden nun alle Nachrichten angezeigt, die sich innerhalb des Topics befinden.