IoT Amazon MQTT Client

Was ist AWS IoT?

AWS IoT bietet sichere, bidirektionale Kommunikation zwischen mit dem Internet verbundenen Geräten wie Sensoren, Aktoren, eingebetteten Mikrocontrollern oder intelligenten Geräten und der AWS Cloud. Dies ermöglicht es Ihnen, Telemetriedaten von mehreren Geräten zu sammeln und die Daten zu speichern und zu analysieren. Sie können auch Anwendungen erstellen, die es Ihren Benutzern ermöglichen, diese Geräte über ihre Telefone oder Tablets zu steuern.

 

Message Broker

Bietet einen sicheren Mechanismus, mit dem Geräte und AWS-IoT-Anwendungen Nachrichten untereinander veröffentlichen und empfangen können. Sie können entweder das MQTT-Protokoll direkt oder MQTT über WebSocket zum Veröffentlichen und Abonnieren verwenden.

 

Der AWS IoT-Message-Broker ist ein Publish/Subscribe-Broker-Dienst, der das Senden und Empfangen von Nachrichten an und von AWS IoT ermöglicht. Bei der Kommunikation mit AWS IoT sendet ein Client eine Nachricht, die an ein Thema wie Sensor/temp/room1 adressiert ist.

 

Der Message Broker sendet die Nachricht wiederum an alle Clients, die sich registriert haben, um Nachrichten für dieses Topic zu empfangen. Der Akt des Sendens der Nachricht wird als Publishing bezeichnet. Der Akt des Registrierens zum Empfangen von Nachrichten für einen Topic-Filter wird als Subscribing bezeichnet.

 

Der Topic-Namespace ist für jedes AWS-Konto-/Region-Paar isoliert. Zum Beispiel ist das Topic Sensor/temp/room1 für ein AWS-Konto unabhängig vom Topic Sensor/temp/room1 für ein anderes AWS-Konto. Dasselbe gilt für Regionen. Das Topic Sensor/temp/room1 im selben AWS-Konto in us-east-1 ist unabhängig vom selben Topic in us-east-2. AWS IoT unterstützt nicht das Senden und Empfangen von Nachrichten über AWS-Konten und Regionen hinweg.

 

Der Message-Broker führt eine Liste aller Client-Sitzungen und der Abonnements für jede Sitzung. Wenn eine Nachricht auf einem Topic veröffentlicht wird, prüft der Broker auf Sitzungen mit Abonnements, die dem Topic zugeordnet sind. Der Broker leitet die Publish-Nachricht dann an alle Sitzungen weiter, die einen aktuell verbundenen Client haben.

 

MQTT-Client

TsgcIoTAmazon_MQTT_Client ist die Komponente, die zur Verbindung mit AWS IoT verwendet wird. Ein Client kann nur mit einem Gerät verbunden werden. Der Client verbindet sich über das einfache MQTT-Protokoll und authentifiziert sich mit einem X.509-Client-Zertifikat.

 

Um sich mit AWS IoT zu verbinden, benötigt der Client die folgenden Eigenschaften:

 

Amazon.ClientId: Identifikation des Clients, optional.

Amazon.Endpoint: Servername, mit dem sich der MQTT-Client verbindet.

Amazon.Port: verwendet standardmäßig Port 8883. Wenn der Port 443 ist, wird automatisch ALPN zum Verbinden verwendet (erfordert benutzerdefinierte Indy-Version).

 

AWS IoT Core unterstützt Geräte und Clients, die die Protokolle MQTT und MQTT over WebSocket Secure (WSS) verwenden, um Nachrichten zu veröffentlichen und zu abonnieren. Die folgende Tabelle listet die Protokolle auf, die die AWS-IoT-Geräte-Endpunkte unterstützen, sowie die Authentifizierungsmethoden und Ports, die sie verwenden.

 

Protocol Authentifizierung Port ALPN Protocol Name
MQTT über WebSocket Signature Version 4 443  
MQTT über WebSocket Benutzerdefinierte Authentifizierung 443  
MQTT X.509-Client-Zertifikat 443 x-amzn-mqtt-ca
MQTT X.509-Client-Zertifikat 8883  
MQTT Benutzerdefinierte Authentifizierung 443 mqtt

 

 

Zertifikat-Authentifizierung

Sie müssen Zertifikate in Ihrer Amazon-AWS-Konsole erstellen und den Pfad festlegen, in dem sie gespeichert sind.

 

Wenn Sie OpenSSL als IOHandler verwenden, müssen Sie das Zertifikat in den folgenden Pfaden festlegen

 

Certificate.Enabled: auf True setzen, wenn Sie Zertifikate verwenden möchten.

Certificate.CertFile: Pfad zum X.509-Client-Zertifikat.

Certificate.KeyFile: Pfad zur X.509-Client-Schlüsseldatei.

 

Wenn Sie SChannel als IOHandler verwenden, konvertieren Sie zunächst das PEM-Zertifikat + Schlüssel in ein PFX-Zertifikat. Dies erfordert OpenSSL-Binärdateien:

 


openssl pkcs12 -inkey 884ccf73ff-private.pem.key -in 884ccf73ff-certificate.pem.crt -export -out 884ccf73ff-certificate.pfx

Legen Sie dann die folgenden Pfade fest (es ist nicht erforderlich, die Schlüsseldatei festzulegen, da sie bereits im Zertifikat enthalten ist).

 

Certificate.Enabled: auf True setzen, wenn Sie Zertifikate verwenden möchten.

Certificate.CertFile: Pfad zum PFX-Zertifikat

 

SignatureV4 Authentication

Sie müssen einen Benutzer in Ihrer Amazon-AWS-Konsole erstellen und die Access- und Secret-Keys speichern, die zum Signieren der WebSocket-Anfrage verwendet werden.

 

SignatureV4.Enabled: auf True setzen, wenn Sie diese Art der Authentifizierung verwenden möchten.

SignatureV4.Region: die Region, in der sich Ihr Gerät befindet (Beispiel: us-east-1).

SignatureV4.AccessKey: der in Ihrer Amazon-Konsole erstellte oder als temporäre Anmeldeinformation erhaltene Zugriffsschlüssel.

SignatureV4.SecretKey: der in Ihrer Amazon-Konsole erstellte Secret Key oder als temporäre Anmeldedaten erhaltene

SignatureV4.SessionToken: (bedingt) wenn Sie Temporary Security Credentials verwenden, setzen Sie hier das Sicherheitstoken.

OpenSSL_Options: Konfiguration der OpenSSL-Bibliotheken.

APIVersion: ermöglicht die Definition, welche OpenSSL-API verwendet wird.

oslAPI_1_0: verwendet API 1.0 OpenSSL, es ist die neueste von Indy unterstützte

oslAPI_1_1: verwendet API-1.1-OpenSSL, erfordert unsere benutzerdefinierte Indy-Bibliothek und ermöglicht die Verwendung von OpenSSL-1.1.1-Bibliotheken (mit TLS-1.3-Unterstützung).

oslAPI_3_0: verwendet API 3.0 OpenSSL, erfordert unsere benutzerdefinierte Indy-Bibliothek und ermöglicht die Verwendung von OpenSSL-3.0.0-Bibliotheken (mit TLS-1.3-Unterstützung).

LibPath: hier können Sie konfigurieren, wo sich die openSSL-Bibliotheken befinden

oslpNone: dies ist der Standard, die OpenSSL-Bibliotheken sollten sich im selben Ordner befinden, in dem sich die Binärdatei befindet, oder in einem bekannten Pfad.

oslpDefaultFolder: legt automatisch den OpenSSL-Pfad fest, in dem sich die Bibliotheken für alle IDE-Personalities befinden sollten.

oslpCustomFolder: wenn dies die ausgewählte Option ist, definieren Sie den vollständigen Pfad in der Eigenschaft LibPathCustom.

LibPathCustom: wenn LibPath = oslpCustomFolder, definieren Sie hier den vollständigen Pfad, in dem sich die OpenSSL-Bibliotheken befinden.

UnixSymLinks: aktiviert oder deaktiviert das Laden von SymLinks unter Unix-Systemen (standardmäßig aktiviert, außer unter OSX64):

oslsSymLinksDefault: standardmäßig aktiviert, außer unter OSX64 (nach MacOS Monterey schlägt der Versuch fehl, die Bibliothek ohne Version zu laden.).

oslsSymLinksLoadFirst: SymLinks laden und vor dem Versuch, die Versionsbibliotheken zu laden, ausführen.

oslsSymLinksLoad: Lädt SymLinks, nachdem versucht wurde, die Versionsbibliotheken zu laden.

oslsSymLinksDontLoad: lädt die SymLinks nicht.

 

*SignatureV4 erfordert Indy 10.5.7+

Benutzerdefinierte Authentifizierung

Die benutzerdefinierte Authentifizierung ermöglicht es Ihnen, mithilfe von Authorizer-Ressourcen zu definieren, wie Clients authentifiziert und autorisiert werden. Das Gerät übergibt Anmeldedaten entweder in den Header-Feldern oder Abfrageparametern der Anfrage (für MQTT-over-WebSockets-Protokolle) oder im Benutzernamen- und Passwortfeld der MQTT-CONNECT-Nachricht (für die Protokolle MQTT und MQTT over WebSockets).

 

CustomAuthentication.Enabled: auf True setzen, wenn Sie diese Art der Authentifizierung verwenden möchten.

CustomAuthentication.Parameters: setzen Sie hier die Query-Parameter, die an den Server übergeben werden (standardmäßig /mqtt)

CustomAuthentication.Headers: hier können Sie die benutzerdefinierten Header-Felder ablegen.

CustomAuthentication.WebSockets: wenn auf true gesetzt, funktioniert die Verbindung über das WebSocket-Protokoll, andernfalls über reines TCP.

 

MQTTAuthentication.Enabled: Wenn Sie Benutzername/Passwort in der MQTT-Verbindung übergeben müssen, aktivieren Sie diese Eigenschaft

MQTTAuthentication.Username: Benutzername der MQTT-Verbindung

MQTTAuthentication.Password: Geheimnis der MQTT-Verbindung.

 

 

Der Client kann optional eine ClientId senden, um die Client-Verbindung zu identifizieren; dann können andere Clients abonnieren, um jedes Mal eine Benachrichtigung zu erhalten, wenn dieser Client verbunden, abonniert, getrennt wurde...

 

Authorization

Wenn Sie keine Verbindung über Port 8883 herstellen können und TCP als Transport verwenden (was der Standard ist), nimmt Amazon die "AWS IoT Core Policy", um Clients und Abonnements eine Autorisierung zu erteilen oder nicht. Höchstwahrscheinlich müssen Sie Ihre Client-ID autorisieren.

Gehen Sie in Ihre Amazon-AWS-Konsole, gehen Sie zu IoT Core und greifen Sie auf das Menü "Secure/Policies" zu, wählen Sie dort die Ihrem IoT Thing zugeordnete Policy aus und prüfen Sie am Ende, wie die Verbindung konfiguriert ist. Beispiel:

 

{

"Effect": "Allow",

"Action": [

"iot:Connect"

],

"Resource": [

"arn:aws:iot:us-east-1:222178873557:client/sdk-java",

"arn:aws:iot:us-east-1:222178873557:client/basicPubSub",

"arn:aws:iot:us-east-1:222178873557:client/sdk-nodejs-*"

]

}

 

Diese Konfiguration bedeutet, dass nur Clients mit ID: sdk-java, basicPubSub und sdk-nodejs-* eine Verbindung herstellen dürfen. Ändern Sie es entsprechend und versuchen Sie es erneut.

Wenn es immer noch nicht funktioniert, aktivieren Sie das Protokoll und prüfen Sie in CloudWatch den Grund, warum Sie keine Verbindung herstellen können.

 

Weitere Eigenschaften

 

MQTTHeartBeat: wenn aktiviert, versucht die MQTT-Verbindung aufrechtzuerhalten, indem alle x Sekunden ein Ping gesendet wird.

 

Interval: Anzahl der Sekunden zwischen jedem Ping.

 

MQTTAuthentication: Wenn aktiviert, werden Benutzername und Passwort in die MQTT-Verbindung aufgenommen

 

UserName: Name des Benutzers

Password: geheime Zeichenfolge

 

WatchDog: wenn aktiviert, wird bei Erkennung einer unerwarteten Trennung versucht, sich automatisch wieder mit dem Server zu verbinden.

 

Interval: Sekunden vor den Wiederverbindungsversuchen.

 

Attempts: maximale Anzahl der Wiederverbindungsversuche; null bedeutet unbegrenzt.

 

LogFile: wenn aktiviert, speichert Socket-Nachrichten in einer Protokolldatei (nützlich zum Debuggen). Der Zugriff auf die Protokolldatei ist nicht thread-sicher, wenn von mehreren Threads darauf zugegriffen wird.

 

Enabled: wenn aktiviert, wird jedes Mal, wenn eine Nachricht über den Socket empfangen und gesendet wird, ein Eintrag in einer Datei gespeichert.

 

FileName: vollständiger Pfad zum Dateinamen.

 

Implementierung

 

Die Amazon-MQTT-Implementierung basiert auf MQTT-Version 3.1.1, weicht aber wie folgt von der Spezifikation ab:

 

 

Connect to AWS IoT

Zuerst müssen Sie sich bei Ihrer AWS-Konsole anmelden, ein neues Gerät registrieren und ein X.509-Zertifikat für dieses Gerät erstellen. Sobald dies erledigt ist, können Sie einen neuen TsgcIoTAmazon_MQTT_Client erstellen und sich mit dem AWS-IoT-Server verbinden. Zum Beispiel:

 


oClient := TsgcIoTAmazon_MQTT_Client.Create(nil);
oClient.Amazon.Endpoint := 'a2ohgdjqitsmij-ats.iot.us-west-2.amazonaws.com';
oClient.Amazon.ClientId := 'sgcWebSockets';
oClient.Certificate.CertFile := 'amazon-certificate.pem.crt';
oClient.Certificate.KeyFile := 'amazon-private.pem.key';
oClient.OnMQTTConnect := OnMQTTConnectEvent;
oClient.Active := True;
 
procedure OnMQTTConnect(Connection: TsgcWSConnection; const Session: Boolean; const ReturnCode: TmqttConnReturnCode);
begin
  ShowMessage('Connected to AWS');
end;

Topics

Der Message-Broker verwendet Topics, um Nachrichten von veröffentlichenden Clients an abonnierende Clients zu routen. Der Schrägstrich (/) wird verwendet, um die Topic-Hierarchie zu trennen. Die folgende Tabelle listet die Platzhalter auf, die im Topic-Filter verwendet werden können, wenn Sie abonnieren. # muss das letzte Zeichen in dem Topic sein, das Sie abonnieren. Es funktioniert als Platzhalter, indem es den aktuellen Baum und alle Unterbäume abgleicht.

Zum Beispiel empfängt ein Abonnement auf Sensor/# Nachrichten, die an Sensor/, Sensor/temp, Sensor/temp/room1 veröffentlicht werden, aber nicht die Nachrichten, die an Sensor veröffentlicht werden.

+ Stimmt mit genau einem Element in der Topic-Hierarchie überein. Zum Beispiel empfängt ein Abonnement auf Sensor/+/room1 Nachrichten, die an Sensor/temp/room1, Sensor/moisture/room1 usw. veröffentlicht werden.

 


oClient := TsgcIoTAmazon_MQTT_Client.Create(nil);
...
oClient.OnSubscribe := OnSubscribeEvent;
 
vPacketIdentifier := oClient.Subscribe('Sensor/moisture/room1');
  
procedure OnMQTTSubscribe(Connection: TsgcWSConnection; aPacketIdentifier: Word; aCodes: TsgcWSSUBACKS);
begin
  if vPacketIdentifier = aPacketIdentifier then
    ShowMessage('Subscribed to topic Sensor/moisture/room1'); 
end;
 
// Client, can send a message using Publish method.
oClient.Publish('Sensor/moisture/room1', '{"temp"=10}');
  
// Messages received from server, are dispatched OnMQTTPublishEvent.
// For extended payload access (string, bytes or stream), use OnMQTTPublishEx.
procedure OnMQTTPublish(Connection: TsgcWSConnection; aTopic, aText: string);
begin
  DoLog('Received Message: ' + aTopic + ' ' + aText);
end;

Reservierte Topics

Die folgenden Methoden werden verwendet, um reservierte Topics zu abonnieren / zu veröffentlichen.

 

Subscribe_ClientConnected(const aClientId: String): AWS IoT veröffentlicht in diesem Topic, wenn sich ein MQTT-Client mit der angegebenen Client-ID mit AWS IoT verbindet

Subscribe_ClientDisconnected(const aClientId: String): AWS IoT veröffentlicht auf diesem Topic, wenn ein MQTT-Client mit der angegebenen Client-ID die Verbindung zu AWS IoT trennt

Subscribe_ClientSubscribed(const aClientId: String): AWS IoT veröffentlicht auf diesem Topic, wenn ein MQTT-Client mit der angegebenen Client-ID ein MQTT-Topic abonniert

Subscribe_ClientUnSubscribed(const aClientId: String): AWS IoT veröffentlicht in diesem Topic, wenn sich ein MQTT-Client mit der angegebenen Client-ID von einem MQTT-Topic abmeldet

 

Publish_Rule(const aRuleName, aText: String): Ein Gerät oder eine Anwendung veröffentlicht zu diesem Topic, um Regeln direkt auszulösen

 

Publish_DeleteShadow(const aThingName, aText: String): Ein Gerät oder eine Anwendung veröffentlicht in diesem Topic, um einen Shadow zu löschen

Subscribe_DeleteShadow(const aThingName: String): Ein Gerät oder eine Anwendung abonniert dieses Topic, um einen Shadow zu löschen

Subscribe_ShadowDeleted(const aThingName: String): Der Device-Shadow-Dienst sendet Nachrichten zu diesem Topic, wenn ein Shadow gelöscht wird

Subscribe_ShadowRejected(const aThingName: String): Der Device-Shadow-Dienst sendet Nachrichten an dieses Topic, wenn eine Anfrage zum Löschen eines Shadows abgelehnt wird

Publish_ShadowGet(const aThingName, aText: String): Eine Anwendung oder ein Thing veröffentlicht eine leere Nachricht zu diesem Topic, um einen Shadow abzurufen

Subscribe_ShadowGet(const aThingName: String): Eine Anwendung oder ein Thing abonniert dieses Topic, um einen Shadow zu erhalten

Subscribe_ShadowGetAccepted(const aThingName: String): Der Device-Shadow-Dienst sendet Nachrichten an dieses Topic, wenn ein Request für einen Shadow erfolgreich gestellt wird

Subscribe_ShadowGetRejected(const aThingName: String): Der Device Shadow Service sendet Nachrichten an dieses Topic, wenn eine Anfrage für einen Shadow abgelehnt wird

Publish_ShadowUpdate(const aThingName, aText: String): Ein Thing oder eine Anwendung veröffentlicht an dieses Topic, um einen Shadow zu aktualisieren

Subscribe_ShadowUpdateAccepted(const aThingName: String): Der Device Shadow Service sendet Nachrichten an dieses Topic, wenn eine Aktualisierung eines Shadows erfolgreich durchgeführt wird

Subscribe_ShadowUpdateRejected(const aThingName: String): Der Device Shadow-Dienst sendet Nachrichten an dieses Topic, wenn eine Aktualisierung eines Shadows abgelehnt wird

Subscribe_ShadowUpdateDelta(const aThingName: String): Der Device Shadow-Dienst sendet Nachrichten an dieses Topic, wenn ein Unterschied zwischen den Abschnitten "reported" und "desired" eines Shadows festgestellt wird

Subscribe_ShadowUpdateDocuments(const aThingName: String): AWS IoT veröffentlicht ein State-Dokument in diesem Topic, wann immer eine Aktualisierung des Shadow erfolgreich durchgeführt wird

 

Persistente Sitzungen

Eine persistente Sitzung repräsentiert eine fortlaufende Verbindung zu einem MQTT-Nachrichtenbroker. Wenn ein Client mithilfe einer persistenten Sitzung eine Verbindung zum AWS-IoT-Nachrichtenbroker herstellt, speichert der Nachrichtenbroker alle Abonnements, die der Client während der Verbindung vornimmt. Wenn der Client die Verbindung trennt, speichert der Nachrichtenbroker unbestätigte QoS-1-Nachrichten und neue QoS-1-Nachrichten, die zu Themen veröffentlicht werden, die der Client abonniert hat. Wenn der Client die Verbindung zur persistenten Sitzung wiederherstellt, werden alle Abonnements wiederhergestellt und alle gespeicherten Nachrichten mit einer maximalen Rate von 10 Nachrichten pro Sekunde an den Client gesendet.

 

Sie erstellen eine persistente MQTT-Sitzung, indem Sie den Parameter cleanSession im Ereignis OnMQTTBeforeConnect auf False setzen. Wenn für den Client keine Sitzung existiert, wird eine neue persistente Sitzung erstellt. Wenn für den Client bereits eine Sitzung existiert, wird sie fortgesetzt.

 

Geräte müssen das Session-Attribut im OnMQTTConnect-Ereignis betrachten, um festzustellen, ob eine persistente Sitzung vorhanden ist. Wenn Session True ist, ist eine persistente Sitzung vorhanden und gespeicherte Nachrichten werden an den Client zugestellt. Wenn Session False ist, ist keine persistente Sitzung vorhanden und der Client muss seine Topic-Filter erneut abonnieren.

 

Persistente Sitzungen haben eine standardmäßige Ablaufzeit von 1 Stunde. Die Ablaufzeit beginnt, wenn der Message-Broker erkennt, dass ein Client die Verbindung trennt (MQTT-Disconnect oder Timeout). Die Ablaufzeit persistenter Sitzungen kann über den Standard-Limit-Erhöhungsprozess verlängert werden. Wenn ein Client seine Sitzung nicht innerhalb der Ablaufzeit wieder aufnimmt, wird die Sitzung beendet und alle zugehörigen gespeicherten Nachrichten werden verworfen. Die Ablaufzeit ist ungefähr; Sitzungen können bis zu 30 Minuten länger (aber nicht kürzer) als die konfigurierte Dauer persistiert werden.

 

Temporary Credentials

AWS IoT Core kann mit temporären Anmeldedaten arbeiten, die über Identity Pools bezogen werden; es gibt 2 Arten von Identitäten:

 

 

Nicht authentifiziert

Wenn Sie nicht authentifizierte Anmeldedaten verwenden, hängen Sie einfach die Richtlinie an die UnAuthenticated-Rolle an, die automatisch im IAM-Menü erstellt wird. Konfigurieren Sie dann den Client, indem Sie den Access-Key, Secret-Key und Token setzen, die vom Cognito-Dienst zurückgegeben werden.

Nachfolgend finden Sie einen .NET-Code zum Abrufen nicht authentifizierter Anmeldedaten

 


CognitoAWSCredentials credentials = new CognitoAWSCredentials(
    "us-east-1:cc3c9c48-646d-44ef-bfd5-0c5fb2f0882f", // Identity pool ID
    Amazon.RegionEndpoint.USEast1 // Region
);
 
var identityPoolId = credentials.GetCredentialsAsync();
 
AmazonCognitoIdentityClient cognitoClient = new AmazonCognitoIdentityClient(
    credentials, // the anonymous credentials
    Amazon.RegionEndpoint.USEast1 // the Amazon Cognito region
);
 
GetIdRequest idRequest = new GetIdRequest();
idRequest.AccountId = "222178873557";
idRequest.IdentityPoolId = "us-east-1:cc3c9c48-646d-44ef-bfd5-0c5fb2f0882f";
 
GetIdResponse idResp = cognitoClient.GetId(idRequest);
 
string AccessKey = identityPoolId.Result.AccessKey;
string SecretKey = identityPoolId.Result.SecretKey;
string SessionToken = identityPoolId.Result.Token;
 
string IdentityId = idResp.IdentityId;

Authentifiziert

Authentifizierte Anmeldedaten, erfordert das Anhängen der Richtlinie in der automatisch im IAM-Menü erstellten Authenticated Role und das Anhängen der Richtlinie des Benutzers in den AWS-IoT-Core-Richtlinien.

Erstellen Sie also eine neue Richtlinie im Menü der IoT-Core-Richtlinien und hängen Sie diese Richtlinie jedes Mal, wenn sich ein neuer Benutzer authentifiziert, an diesen Benutzer an.

Sie können den folgenden AWS-Befehl verwenden, um eine Richtlinie anzuhängen oder eine Lambda-Funktion zu erstellen.

 

aws iot attach-policy --policy-name PolicyName --target us-east-1:XXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

 

 

Device Provisioning

Der Fleet-Provisioning-Dienst unterstützt die folgenden MQTT-API-Operationen:

 

 

CreateCertificateFromCsr

 

Verwenden Sie die Methode CreateCertificateFromCsr und übergeben Sie den CertificateSigningRequest als Parameter, um das Zertifikat zu erstellen. Um die Antwort auf diese Anfrage zu erhalten, abonnieren Sie zunächst die folgenden Methoden: SubscribeCreateCertificateFromCsrResponse und SubscribeCreateCertificateFromCsrError

 

CreateKeysAndCertificate

 

Verwenden Sie die Methode CreateKeysAndCertificate, um ein neues Zertifikat und Schlüssel zu erstellen. Um die Antwort auf diese Anfrage zu erhalten, abonnieren Sie zunächst die folgenden Methoden SubscribeCreateKeysAndCertificateResponse und SubscribeCreateKeysAndCertificateError

 

RegisterThing

 

Verwenden Sie die Methode RegisterThing, um ein neues Thing zu registrieren, indem Sie als Parameter den Template-Namen und die Payload im JSON-Format übergeben. Um die Antwort auf diesen Request zu empfangen, abonnieren Sie zunächst die folgenden Methoden SubscribeRegisterThingResponse und SubscribeRegisterThingError.