Azure IOT Hub Device SDK を使用すると、C99 以降または C++ で記述されたアプリケーションが、Azure IoT Hub、Azure IoT Central、および Azure IoT Device Provisioning と簡単に通信できるようになります。このリポジトリには、ライブラリのソース コード、セットアップ手順、使用シナリオを示すサンプルが含まれています。
メモリがメガバイトではなくキロバイトで測定される制約のあるデバイスの場合は、さらに軽量な SDK オプションが利用可能です。詳細については、「その他の Azure IoT SDK」を参照してください。
すべての Azure IoT SDK ユーザーは、Azure IoT Hub および Device Provisioning Service の今後の TLS 証明書の変更に注意することをお勧めします。これは、これらのサービスに接続する SDK の機能に影響を与えます。 2022 年 10 月に、両方のサービスが現在の Baltimore CyberTrust CA ルートから DigiCert Global G2 CA ルートに移行されます。事前に移行期間があり、IoT デバイスには Baltimore と Digicert の両方の公開証明書が必要になります。接続の問題を防ぐために、これらの証明書はアプリケーションにハードコーディングされるか、WiFi モジュールにフラッシュされる可能性があります。
Baltimore パブリック証明書のみを持つデバイスは、2022 年 10 月に Azure IoT Hub および Device Provisioning Service に接続できなくなります。
この変更に備えるには、デバイスの TLS スタックにこれらのパブリック ルート オブ トラスト証明書が両方とも構成されていることを確認してください。
IoT サービスがこのようなことを行う理由についての詳細な説明については、この記事を参照してください。
mbed や Arduino などの制約のあるデバイスのシナリオでは、より優れた軽量の SDK オプションが利用できることに注意してください。詳細については、「その他の Azure IoT SDK」を参照してください。
サポートされているプラットフォームで Azure IoT SDK の使用を開始する最も簡単な方法は、次のパッケージとライブラリを使用することです。
Arduino: Arduino IDE のデバイス SDK ライブラリ
Windows: Vcpkg 上のデバイス SDK
iOS: CocoaPod 上のデバイス SDK
iOSの制限事項
上記の 2 つの不足している機能を含む、より完全なiOS エクスペリエンスについては、Embedded C SDK 上に構築されたサンプル ネイティブ Swift ライブラリを参照してください。
Linux を含む他のプラットフォームの場合は、SDK を直接複製してビルドする必要があります。上記のプラットフォーム用に直接ビルドすることもできます。
SDK には多数のサンプルが用意されています。詳細については、こちらをご覧ください。
C SDK の API リファレンス ドキュメントはここにあります。
他の言語の Azure IoT SDK を見つけるには、こちらのガイダンスを参照してください。
Azure IoT アプリケーションの構築の詳細については、Azure IoT Dev Center にアクセスしてください。
IoT Hub は、デバイスが接続するための複数のプロトコル (MQTT、AMQP、HTTPS) をサポートします。 MQTT と AMQP は、オプションで WebSocket 上で実行できます。 Device Client SDK を使用すると、接続の作成時にプロトコルを選択できます。
デバイス/モジュール クライアント SDK を使用すると、オプションで IoT プラグ アンド プレイ デバイスの作成が可能になります。
どのプロトコルを使用すればよいかわからない場合は、MQTT または MQTT-WS を使用する必要があります。 MQTT は AMQP よりも必要なリソースが大幅に少なく、HTTPS よりもはるかに多くの IoT Hub 機能をサポートします。 AMQP と HTTPS のどちらにも、Azure IoT プラグ アンド プレイなどの今後の新機能用のデバイス クライアント SDK 実装が保証されているわけではありません。
✔️ 利用可能な機能 ✖️ 機能は計画されていますが、サポートされていません ➖ サポートの計画はありません
特徴 | mqtt | mqtt-ws | amqp | amqp-ws | https | 説明 |
---|---|---|---|---|---|---|
認証 | ✔️ | ✔️* | ✔️ | ✔️* | ✔️* | 秘密キー、SASToken、X-509 自己署名、認証局 (CA) 署名などのサポートされている認証を使用して、デバイスを IoT Hub に安全に接続します。 *IoT Hub は、現時点では AMQP および MQTT 経由で署名された X-509 CA のみをサポートしています。 |
デバイスからクラウドへのメッセージを送信する | ✔️* | ✔️* | ✔️* | ✔️* | ✔️* | カスタム プロパティを追加するオプションを使用して、デバイスからクラウドへのメッセージ (最大 256 KB) を IoT Hub に送信します。現時点では、IoT Hub は AMQP および HTTPS 経由のバッチ送信のみをサポートしています。この SDK は、HTTP 経由のバッチ送信をサポートしています。 * AMQP および AMQP-WS を介したバッチ送信、および D2C メッセージへのシステム プロパティの追加が進行中です。 |
クラウドからデバイスへのメッセージを受信する | ✔️* | ✔️* | ✔️ | ✔️ | ✔️ | C2D メッセージを完了/拒否/放棄するオプションを使用して、クラウドからデバイスへのメッセージを受信し、関連するカスタム プロパティとシステム プロパティを IoT Hub から読み取ります。 *IoT Hub は、現時点では HTTPS および AMQP 経由でのみ C2D メッセージを完了/拒否/破棄するオプションをサポートしています。 |
デバイスツイン | ✔️* | ✔️* | ✔️* | ✔️* | ➖ | IoT Hub は、IoT Hub に接続するデバイスごとにデバイス ツインを保持します。デバイスは、ツイン タグの取得、必要なプロパティのサブスクライブなどの操作を実行できます。 *報告されたプロパティ バージョンと必要なプロパティ バージョンの送信が進行中です。 |
直接法 | ✔️ | ✔️ | ✔️ | ✔️ | ➖ | IoT Hub を使用すると、クラウドからデバイス上のダイレクト メソッドを呼び出すことができます。 SDK は、メソッド固有の操作と汎用操作のハンドラーをサポートします。 |
ファイルを BLOB にアップロードする | ➖ | ➖ | ➖ | ➖ | ✔️ | デバイスはファイルのアップロードを開始でき、アップロードが完了すると IoT Hub に通知します。ファイルのアップロードには HTTPS 接続が必要ですが、他の操作には任意のプロトコルを使用してクライアントから開始できます。 |
接続ステータスとエラーのレポート | ✔️* | ✔️* | ✔️* | ✔️* | ✖️ | IoT Hub でサポートされているエラー コードのエラー レポート。 *この SDK は、認証およびデバイスが見つからないときのエラー レポートをサポートしています。 |
再試行ポリシー | ✔️* | ✔️* | ✔️* | ✔️* | ✖️ | 失敗したデバイスからクラウドへのメッセージの再試行ポリシーには、試行なし、ジッターありの指数バックオフ (デフォルト) の 2 つのオプションがあります。 *カスタム再試行ポリシーが進行中です。 |
単一接続上でデバイスを多重化する | ➖ | ➖ | ✔️ | ✔️ | ✔️ | 多重化には、この表に記載されている以上の制限があります。詳細については、このドキュメントを参照してください。 |
接続プーリング - 接続数の指定 | ➖ | ➖ | ✖️ | ✖️ | ✖️ | |
Azure IoT プラグ アンド プレイのサポート | ✔️ | ✔️ | ➖ | ➖ | ➖ | Azure IoT プラグ アンド プレイ デバイスを構築する機能。 |
この SDK には、設定できるオプションとプラットフォーム固有の機能も含まれています。詳細リストはこのドキュメントにあります。
このリポジトリには、デバイス プロビジョニング サービスのプロビジョニング クライアント SDK が含まれています。
✔️ 利用可能な機能 ✖️ 機能は計画されていますが、サポートされていません ➖ サポートの計画はありません
特徴 | mqtt | mqtt-ws | amqp | amqp-ws | https | 説明 |
---|---|---|---|---|---|---|
TPM個人登録 | ➖ | ➖ | Azure IoT C-SDK 内での utpm-c ライブラリ サポートと DPS-TPM 認証サポートの非推奨を発表します。 2023 年 5 月以降、Microsoft はこのライブラリのサポートを提供しなくなります。このライブラリを使用する既存のアプリケーションは引き続きそのまま動作します。 tpm2tss OpenSSL エンジンを使用した DPS-X509 認証に切り替えることを強くお勧めします。 Trusted Platform Module を使用した個別登録によるデバイス プロビジョニング サービスへのデバイスの接続は、引き続き現状のまま機能します。このクイックスタートでは、TPM を使用して個別に登録するためのシミュレートされたデバイスを作成する方法を確認します。 TPM over MQTT は現在、Device Provisioning Service ではサポートされていません。 | |||
X.509 個別登録 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | この SDK は、X.509 リーフ証明書を使用した個別の登録によるデバイス プロビジョニング サービスへのデバイスの接続をサポートします。このクイックスタートでは、X.509 を使用した個別登録用のシミュレートされたデバイスを作成する方法を確認します。 |
X.509 登録グループ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | この SDK は、X.509 ルート証明書を使用した登録グループ経由のデバイス プロビジョニング サービスへのデバイスの接続をサポートします。 |
C 用 IoT Hub デバイス SDK は、幅広い OS プラットフォームおよびデバイスで使用できます。
デバイス プラットフォームが以下をサポートするための最小要件は次のとおりです。
プラットフォームのサポートの詳細については、このドキュメントを参照してください。さまざまな SDK がテストされた OS プラットフォームの完全なリストは、Azure Certified for IoT デバイス カタログで見つけることができます。このページにリストされていない OS およびハードウェア プラットフォームでも SDK を使用できる場合があることに注意してください。すべての SDK はオープンソースであり、移植できるように設計されています。提案、フィードバック、または報告すべき問題がある場合は、以下の「貢献とサポート」セクションを参照してください。
C SDK とライブラリ:
リポジトリには、Linux、Windows、およびマイクロコントローラー プラットフォーム上で C 用デバイス クライアント SDK をコンパイルして実行するための手順とビルド ツールが含まれています (C 用デバイス クライアントのコンパイルの詳細については、上記のリンクを参照してください)。
C 用のデバイス クライアント SDK を新しいプラットフォームに移植することを検討している場合は、移植ガイド ドキュメントを確認してください。
MBED OS
その他の関連する注意事項については、以下の「非推奨のフォルダー」も参照してください。
バグが発生した場合、新機能についての提案がある場合、またはこのプロジェクトへの積極的な貢献者になりたい場合は、貢献ガイドラインに記載されている指示に従ってください。
/c-utility, /deps, /umqtt, /uamqp
-
これらは、他のプロジェクトと共有されるアダプターやプロトコル実装などのコードを含む git サブモジュールです。
/build, /build_all
ゲート関連のフォルダーを構築してチェックインします。
/certs
Azure IoT Hub との通信に必要な証明書が含まれています。
/doc
このフォルダーには、アプリケーション開発ガイドとデバイスのセットアップ手順が含まれています。
/iothub_client
ライブラリの生のメッセージング機能を提供する Azure IoT Hub クライアント コンポーネントが含まれています。使用方法については、API ドキュメントとサンプルを参照してください。
/provisioning_client
このフォルダーには、デバイス プロビジョニング クライアントのクライアント ライブラリが含まれています。
/samples
SDK を使用したより複雑な E2E シナリオを示すサンプルが含まれています。
/testtools
ライブラリのテストに使用されるツールが含まれています。
/tools
その他のツール。
次のフォルダーは廃止されました。
/iothub_service_client
デバイスへのメッセージの送信やデバイス ID レジストリの管理などの操作を実行するための IoT Hub サービスとの対話を可能にするライブラリが含まれています。
/provisioning_service_client
Device Proviosining サービスと対話して、登録に関するポリシーの設定などの操作を実行できるようにするライブラリが含まれています。
/serializer
Raw メッセージング ライブラリに加えてモデリング機能と JSON シリアル化機能を提供するライブラリが含まれています。
C SDK は、新機能、重大なバグ修正、および長期サポート (LTS) のリリースを提供します。一般的なバグ修正は個別のリリースではなく、LTS リリースに含まれます。バージョニングは、セマンティック バージョニング、 xyz
またはmajor.minor.patch
に従います。バージョンが更新されるたびに、 xyz
タグが付けられます。
新機能と重大なバグ修正 (セキュリティ アップデートを含む) はメイン ブランチでリリースされます。これらのリリースはyyyy-mm-dd
形式の日付を使用してタグ付けされます。機能リリースでは、 minor
バージョンが変更され、 patch
バージョンが 0 にリセットされます。重大なバグ修正では、 patch
バージョンのみが変更されます。
新しい LTS リリースはメインから分岐し、 LTS_
タグが付けられます。新しい LTS リリースは、リリース時のメイン ブランチからバージョンを継承します。 LTS ブランチには、ブランチが作成された月と年に応じてlts_mm_yyyy
という名前が付けられます。
更新された LTS リリースは、重大なバグ修正 (セキュリティ アップデートを含む) がメイン ブランチから移植されたときに行われます。これらの更新されたリリースは、バンプされた Ref## (例: LTS_
) を除いて同じ方法でタグ付けされます。 patch
バージョンも上がります。新機能や一般的なバグ修正は LTS アップデートに移植されません。
以下の表は、LTS ブランチとリリースされたパッケージのマッピングを示しています。
パッケージ | GitHub ブランチ | LTSタグ | LTS 開始日 | メンテナンス終了日 |
---|---|---|---|---|
vcpkg: 2024-08-12 | lts_08_2024 | LTS_08_2024 | 2024-08-12 | 2025-08-12 |
vcpkg: 2024-03-04 | lts_03_2024 | LTS_03_2024 | 2024-03-04 | 2025-03-04 |
「メンテナンス終了日」は、関連バージョンのサポート終了日を指します。
以下は、C SDK のバージョン管理とタグ付けの仮想的な例です。 minor
バージョンは色で区別されます。
1.9.0
というタグが付けられ、リリースには2020-02-23
タグが付けられます。LTS_07_2020
のタグが付けられます。メイン ブランチは 1.10.0 に移行し、 1.10.0
タグが付けられます。2020-08-02
というタグが付けられています。1.10.1
タグが付けられ、リリースには2020-09-28
タグが付けられました。重大なバグ修正は、 lts_07_2020_ref02
という名前のブランチを作成することで lts リリースLTS_07_2020
(およびその他の既存の LTS ブランチ) に移植され、そのバージョンは 1.9.1 に上がり、 1.9.1
およびLTS_07_2020_Ref02
のタグが付けられます。重大なバグ修正の一部であったサブモジュールには、 LTS_07_2020_Ref02
のタグが付けられます。1.11.0
というタグが付けられ、リリースには2020-12-14
というタグが付けられます。このプロジェクトはマイクロソフトのオープンソース行動規範を採用しています。詳細については、「行動規範に関するよくある質問」を参照するか、追加の質問やコメントがあれば [email protected] までお問い合わせください。
Microsoft は、Microsoft 製品とサービスを提供および改善し、ユーザー エクスペリエンスを向上させるために使用されるパフォーマンスおよび使用状況に関する情報を収集します。詳細については、プライバシーに関する声明をご覧ください。