Skip to main content

Bibliothek MQTT Client SL

MQTT (Message Queuing Telemetry Transport) ist ein offenes IoT-Protokoll, das die Übertragung von Telemetriedaten zwischen Geräten in Form von Nachrichten ermöglicht. Damit können Sie Nachrichten von einer CODESYS-Steuerung an einen MQTT Broker senden und Nachrichten basierend auf "Topics" abonnieren.

  • Die Kommunikation der Geräte erfolgt immer über einen MQTT Broker

    Beispiel: Eclipses Mosquitto

  • Das Abonnieren und Senden von Nachrichten erfolgt auf Basis von "Topics". Ein "Topic" entspricht einem Pfad.

    Beispiel: device1/temperature

  • Das Abonnieren von Nachrichten erfolgt unter Angabe eines Topic-Filters. Dabei sind auch Wildcards erlaubt (+ für eine Ebene, # für mehrere Ebenen)

  • Das Format einer Nachricht ist nicht festgelegt. Es kann ein JSON-String oder eine beliebige Datenstruktur übertragen werden.

. Funktionsbausteine der MQTT Client SL Bibliothek:
  • Funktionsbaustein zum Herstellen einer MQTT Verbindung (MQTTClient)

  • Funktionsbaustein zum Versenden einer Nachricht (MQTTPublish)

  • Funktionsbaustein zum Abonnieren von Nachrichten (MQTTSubscribe)

. Unterstützte Funktionen:
  • Publish/Subscribe von Nachrichten auf Basis von MQTT V3.1.1 und MQTT V5.0

  • TLS Verschlüsselung

  • Unterstützung von Clientzertifikaten (Übergabe eines Zertifikat-Handle)

  • Unterstützung von "Qualitiy of Service‘":

    0, 1 und 2 (QoS0, QoS1, QoS2) für "Last Will", Publisher und Subscriber

  • Datentyp von "Topics": WSTRING

  • Maximale Größe eines Topics: 1024

  • Die maximale Packetgröße und Payloadgröße ist über eine Parameterliste konfigurierbar

  • Multitask- und Multicore-Unterstützung

    MQTTClient, MQTTPublish und MQTTSubscribe können jeweils auf unterschiedlichen Tasks oder Prozessorkernen ausgeführt werden

  • "Last Will"-Nachrichten (QoS0, QoS1, QoS2)

  • Wildcards (# und +)

  • MQTT oder WebSocket

. Unterstützte MQTT V5-Funktionen:
  • Session Expiry

  • Message Expiry

  • Reason Code on All ACKs

  • Server Disconnect

  • Payload Format and Content Type

  • Request / Response

  • Shared Subscriptions

  • Subscription ID

  • Topic Alias

  • Flow Control

  • User Properties

  • Maximum Packet Size

  • Optional Server Feature Availability

  • Enhanced Authentication

  • Subscription Options

  • Will Delay

  • Server Keep Alive

  • Assigned ClientID

  • Server Reference

Nachrichtendurchsatz

Der maximale Nachrichtendurchsatz (Anzahl Nachrichten/Sekunde, mps) hängt von der verwendeten Hardware, der Nachrichtengröße, den QoS Einstellungen und von der Konfiguration (Parameterliste MQTTParam, Zykluszeit) ab.

Beispiel 1. Beispiel Messungen

Konfiguration:

  • Lokaler Mosquitto Broker

  • Lokale CODESYS Control (1 Publisher)

  • Lokale CODESYS Control (1 Subscriber)

  • MQTTParam (Standardeinstellungen)

  • Nachrichtengröße: 1024 Byte

  • Zykluszeit: 1 ms

Ergebnis:

  • QoS0 => ca. 190 mps

  • QoS1 => ca. 130 mps

  • QoS2 => ca. 90 mps



Tipp

Sehen Sie hierzu das Beispiel Verwenden der Bibliothek MQTT Client SL.