IotMqttSampleMathworksThingspeak

In diesem Beispiel wird die Kommunikation mit der MathWorks ThingSpeak Cloud dargestellt. Da dieses Beispiel im Wesentlichen auf dem Beispiel IotMqttSampleUsingQueue basiert, werden in diesem Abschnitt nur die relevanten Teile zur Verbindungsherstellung mit der ThingSpeak Cloud erklärt.

Beispielcode können Sie als Archiv hier herunterladen: ThingSpeakSample.

MQTT Device Konfiguration

Um MQTT-Daten an ThingSpeak zu übertragen, müssen Sie Ihr MQTT Device zunächst registrieren. Melden Sie sich bei ThingSpeak mit Ihrem MathWorks Account an und wählen Sie im oberen Menü Devices > MQTT. Wählen Sie Add new Device. Benennen Sie Ihr Gerät und autorisieren Sie publish und subscribe auf dem entsprechenden ThingSpeak-Kanälen. Speichern Sie Ihre Anmeldedaten.

Parameter für Verbindungsaufbau

Das folgende Code Snippet zeigt die notwendigen Parameter für einen Verbindungsaufbau mit der MathWorks ThingSpeak Cloud. Im Wesentlichen handelt es sich hierbei um statische Parameter. Diese können auch im Deklarationsteil bei der Instanziierung des MQTT Client angegeben werden. Die im Folgenden zu nutzenden Daten <Client ID>, <Username> und <Password> werden Ihnen bei der Konfiguration eines MQTT Device auf ThingSpeak mitgeteilt.

IF bSetParameter THEN
  bSetParameter := FALSE;
  fbMqttClient.sHostName:= 'mqtt3.thingspeak.com';
  fbMqttClient.nHostPort:= 1883;
  fbMqttClient.sClientId:= '<Client ID as provided by MQTT Device on ThingSpeak>';
  fbMqttClient.sUsername:= '<username as provided by MQTT Device on ThingSpeak>';
  fbMqttClient.sUserPassword:= '<password as provided by MQTT Device on ThingSpeak>';
END_IF

ThingSpeak unterstützt ebenfalls die Absicherung der Kommunikationsverbindung über TLS. Hierbei muss das CA-Zertifikat von ThingSpeak heruntergeladen und über die TLS-Struktur beim Funktionsbaustein referenziert werden. Für weitere Informationen zum ThingSpeak CA-Zertifikat empfehlen wir die Mathworks ThingSpeak Dokumentation.

IF bSetParameter THEN
  bSetParameter := FALSE;
  fbMqttClient.sHostName:= 'mqtt3.thingspeak.com';
  fbMqttClient.nHostPort:= 8883;
  fbMqttClient.sClientId:= '<Client ID as provided by MQTT Device on ThingSpeak>';
  fbMqttClient.sUsername:= '<username as provided by MQTT Device on ThingSpeak>';
  fbMqttClient.sUserPassword:= '<password as provided by MQTT Device on ThingSpeak>';
  
  stMqttTls.sVersion:= 'tlsv1.2';
  stMqttTls.sCA:= 'C:\TwinCAT\3.1\Config\Certificates\<thingSpeakCert.pem>;
  fbMqttClient.stTLS := stMqttTls;
END_IF

Publish

Beim Publishen von Daten an die MathWorks ThingSpeak Cloud muss das Topic in folgender Form angegeben werden:

channels / <channelID> / publish

<channelID> entspricht hierbei der ID des Kanals, der im MathWorks ThingSpeak Portal für den Datenempfang vorgesehen und konfiguriert wurde.

Ihr Gerät muss für publish auf dem angegebenen Kanal autorisiert sein. Sie können die Autorisierung über Devices > MQTT im Top Menü ändern, wenn Sie auf der ThingSpeak-Website angemeldet sind.

Subscribe

Beim Subscriben auf Daten muss das Topic in folgender Form angegeben werden:

channels / <channelID> / subscribe / fields / <fieldKey>

<channelID> entspricht hierbei der ID des Kanals, der im MathWorks ThingSpeak Portal für den Datenempfang vorgesehen und konfiguriert wurde.

<fieldKey> entspricht dem Namen des Felds, von dem ein Wert empfangen werden soll.

Ihr Gerät muss für ein subscribe auf dem angegebenen Kanal autorisiert sein. Sie können die Autorisierung über Geräte > MQTT im oberen Menü ändern, wenn Sie auf der ThingSpeak-Website angemeldet sind

Datenformat

Die MathWorks ThingSpeak Cloud nutzt als Payload ein eigenes, string-basiertes Datenformat. Dieses Datenformat wird im oben referenzierten Beispielcode in der Funktion F_Mqtt_ThingSpeak_CreatePayloadStr() generiert und kann direkt genutzt werden.

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken

TwinCAT v3.1.4022.0

IPC oder CX (x86, x64, ARM)

Tc3_IotBase,
Tc2_Utilities (>= v3.3.19.0)