AWS IoT Core

Delphi/C++ Builder アプリケーションを MQTT 経由で AWS IoT Core に接続します。X.509 証明書による相互 TLS または SigV4 署名 WebSocket に対応し、シャドウやルールエンジンとの統合もサポートします。

TsgcIoTAmazon_MQTT_Client

AWS IoT Core 向け MQTT 3.1.1 / MQTT 5 クライアントです。X.509 相互 TLS または SigV4-over-WebSocket 認証に対応し、サブスクリプション、保持メッセージ、will、AWS 固有のクライアント ID 制約もサポートしています。

コンポーネントクラス

TsgcIoTAmazon_MQTT_Client

プロトコル

AWS IoT MQTT

対応プラットフォーム

Windows, macOS, Linux, iOS, Android

エディション

Standard / Professional / Enterprise

認証情報を設定して接続し、パブリッシュする

AWS エンドポイントホストを設定し、X.509 証明書/鍵(または SigV4 用の AWS アクセスキー)を指定してから、通常の MQTT クライアントと同様に接続、サブスクライブ、パブリッシュしてください。

uses
  sgcIoT;

var
  AWSIoT: TsgcIoTAmazon_MQTT_Client;
begin
  AWSIoT := TsgcIoTAmazon_MQTT_Client.Create(nil);
  AWSIoT.IoT.Host := 'a1b2c3d4e5f.iot.eu-west-1.amazonaws.com';

  // X.509 mutual TLS
  AWSIoT.IoT.Authentication := iotAuth_Certificate;
  AWSIoT.IoT.Certificate.CertFile := 'device.cert.pem';
  AWSIoT.IoT.Certificate.KeyFile  := 'device.private.key';
  AWSIoT.IoT.Certificate.RootCert := 'AmazonRootCA1.pem';

  AWSIoT.OnMQTTConnect := procedure(Connection: TsgcWSConnection;
    const Session: Boolean; const ReasonCode: Integer;
    const ReasonName: string;
    const ConnectProperties: TsgcWSMQTTCONNACKProperties)
  begin
    AWSIoT.Subscribe('devices/#');
  end;

  AWSIoT.Active := True;
  AWSIoT.Publish('devices/sensor1/telemetry', '{"temp":22.5}');
end;
// uses: sgcIoT
TsgcIoTAmazon_MQTT_Client *AWSIoT = new TsgcIoTAmazon_MQTT_Client(this);
AWSIoT->IoT->Host = "a1b2c3d4e5f.iot.eu-west-1.amazonaws.com";
AWSIoT->IoT->Authentication = iotAuth_Certificate;
AWSIoT->IoT->Certificate->CertFile = "device.cert.pem";
AWSIoT->IoT->Certificate->KeyFile  = "device.private.key";

AWSIoT->Active = true;

主な機能

AWS 固有の認証方式とトピック規約を処理する、AWS IoT Core 向けのあらかじめ設定済み MQTT クライアントです。

X.509 相互 TLS

IoT.Authentication := iotAuth_Certificate を設定し、デバイス証明書、秘密鍵、AmazonRootCA1.pem を読み込みます。必要に応じてコンポーネントはポート 443 で ALPN x-amzn-mqtt-ca を使用します。

WebSocket 経由の SigV4

ブラウザスタイルの認証には IoT.Authentication := iotAuth_AccessKey を設定し、アクセスキー / シークレットキー / リージョンを設定します。コンポーネントが SigV4 クエリ文字列のプリサインド URL を計算します。

MQTT 3.1.1 + MQTT 5

MQTTVersion で切り替えます。AWS IoT Core は両方をサポートしています。MQTT 5 プロパティ(セッション有効期限、トピックエイリアス、ユーザープロパティ)は標準の MQTT イベントを通じて処理されます。

AWS トピック規約

AWS はシャドウ、ジョブ、プロビジョニング用に $aws/things/<thingName>/... 配下のトピックを予約しています。他のトピックと同様にサブスクライブして、シャドウの更新やジョブの割り当てを受け取れます。

再接続安全性

基底クライアントに WatchDog を設定します。切断時にコンポーネントが再認証(必要に応じて新しい SigV4 クエリ文字列を生成)し、再サブスクライブします。

スループット制限

AWS IoT は接続ごとの制限(パブリッシュ QoS、スループット、メッセージサイズ)を設けています。クォータ内に収めるためにパブリッシュ側で TsgcWSRateLimiter を使用してください。

仕様・参考資料

このコンポーネントが実装するプロトコルの公式ソースです。

ドキュメント・デモ

コンポーネントリファレンスへの直接リンク、すぐに実行できるデモプロジェクトの入手、体験版のダウンロードができます。

オンラインヘルプ — TsgcIoTAmazon_MQTT_Client このコンポーネントのプロパティ、メソッド、イベントの完全なリファレンスです。
デモプロジェクト — Demos\10.IoT_Clients すぐに実行できるサンプルプロジェクトです。sgcWebSockets パッケージに同梱されています。以下から体験版をダウンロードできます。
技術ドキュメント (PDF) このコンポーネントの機能、クイックスタート、Delphi および C++ Builder 向けのコードサンプル、一次資料のリファレンスを掲載しています。
ユーザーマニュアル (PDF) ライブラリのすべてのコンポーネントを網羅した総合マニュアルです。

Delphi を AWS IoT に接続しませんか?

体験版をダウンロードして、Delphi デバイスから AWS IoT Core に IoT テレメトリをストリーミングしてください。