Skip to content

デバイス統合の概要

本セクションは、ハードウェアをEMQX Fleetsと統合するデバイスおよびファームウェア開発者向けです。デバイスがFleetsバックエンドとどのように接続し、認証し、データを交換するかについて説明します。

2つの統合パス

デバイスはMQTTまたはHTTPS(または両方)を介してFleetsと通信できます。

MQTTHTTPS
接続タイプ長時間接続、双方向リクエストごと、リクエスト-レスポンスのみ
クラウドからデバイスへのメッセージ受信可能(トピックをサブスクライブ)プッシュ不可;GETリクエストによるポーリング
オフラインメッセージキューあり(永続的なMQTTセッションで)なし
シャドウの更新デルタトピックのサブスクライブで受信GET /api/v1/thing-datas/{thingName}/shadow でポーリング
コマンドコマンドトピックのサブスクライブで受信インバウンドコマンドは未対応
ジョブ通知jobs/notify トピックで受信POST /api/v1/thing-datas/jobs/get でポーリング
状態/イベントの報告MQTTトピックにパブリッシュThingDatas APIエンドポイントにPOST
プロトコルオーバーヘッド低い高い(リクエストごとのTLSハンドシェイク)
必要なSDKMQTTクライアントライブラリ標準HTTPクライアント

クラウドからのコマンド受信、シャドウの望ましい状態、ジョブ通知のプッシュが必要な場合はMQTTを使用してください。これはほとんどのIoTデバイスに推奨されるパスです。

デバイスがデータ(イベント、シャドウ状態)の報告のみを行い、望ましい状態の変更をポーリングで取得できる場合はHTTPSを使用してください。リソース制約のあるデバイスや永続的なTCP接続が困難な環境に適しています。

デバイスの識別

デバイスがFleetsと通信する前に、Thingとして登録されている必要があります。通信に関連する識別フィールドは以下の2つです。

フィールド用途
Thing名すべてのMQTTシステムトピックおよびThingDatas APIリクエストボディの {thingName}
MQTTクライアントIDMQTT CONNECTパケットのクライアントID。ライフサイクルイベントの追跡に使用

これらの値は同じでも異なっていてもかまいません。トピックパスやAPIペイロードではThing名を一貫して使用してください。

認証

EMQXブローカーへのMQTT接続

デバイスはFleetsデプロイメントに関連付けられたEMQXブローカーに標準のMQTT認証で接続します。ホスト、ポート、認証情報はデプロイメントの接続設定を参照してください。

HTTPS(ThingDatas API)

すべての /api/v1/thing-datas/* エンドポイントは認証が必要です。Deployment APIキーをBasic認証で使用してください。

text
Authorization: Basic <base64(apiKey:apiSecret)>

デバイス用のAPIキー作成についてはAPIキーの管理を参照してください。

MQTTシステムトピック

すべてのFleetsシステムトピックは $emqx/ プレフィックスを使用します。カスタムテレメトリトピック(設定されている場合)はアプリケーション定義のパスを使用します。

トピックパターン方向用途
$emqx/things/{name}/shadow/update双方向シャドウ状態(クラウドからの望ましい状態、デバイスからの報告状態)
$emqx/things/{name}/shadow/update/deltaクラウド → デバイスデルタ通知
$emqx/things/{name}/events/{type}デバイス → クラウドイベント(QoS 1)
$emqx/commands/things/{name}/executions/{id}/requestクラウド → デバイスコマンドリクエスト
$emqx/commands/things/{name}/executions/{id}/responseデバイス → クラウドコマンドレスポンス
$emqx/things/{name}/jobs/notifyクラウド → デバイス保留中ジョブの変更通知
$emqx/things/{name}/jobs/notify-nextクラウド → デバイス次の保留中ジョブの変更通知
$emqx/things/{name}/jobs/getデバイス → クラウド保留中ジョブ一覧のリクエスト
$emqx/things/{name}/jobs/start-nextデバイス → クラウド次の保留中ジョブの開始
$emqx/things/{name}/jobs/{jobId}/getデバイス → クラウド特定ジョブ実行の取得
$emqx/things/{name}/jobs/{jobId}/updateデバイス → クラウドジョブ実行状況の報告

次のステップ

  • MQTT統合:シャドウ、コマンド、ジョブのMQTTセットアップ、サブスクリプション、パブリッシュ形式、フローダイアグラム
  • HTTPS統合:HTTPSのみを使用するデバイス向けThingDatas APIリファレンス
  • デバイスシャドウ同期:デバイス視点のシャドウ同期フローのステップバイステップ