Skip to content

コマンド送信

コマンドは、接続された単一のデバイスにリアルタイムで送信されるリクエストです。デバイスはアクションを実行し、レスポンスを返します。Fleetsは実行結果を記録し、コマンドが成功したか、失敗したか、タイムアウトしたかを確認できます。

前提条件

  • 対象デバイスはThingとして登録されている必要があります。
  • デバイスはオンラインで、コマンド用トピックをサブスクライブしている必要があります。オフラインのデバイスに送信されたコマンドはタイムアウトします。

コンソールからコマンドを送信する

  1. Fleetsのデプロイメントで、Commands & Jobs に移動します。
  2. + Send Command をクリックします。
  3. 以下の項目を入力します:
    • Thing:対象のデバイスを選択します。
    • Action:Thing Typeスキーマで定義されたアクション名を入力します(例:setTemperatureunlockreboot)。スキーマにコマンドが定義されていなくても任意のアクション名を送信可能です。
    • Parameters:(任意)アクションの入力パラメータを含むJSONオブジェクト。
    • TTL:(任意)Fleetsがデバイスのレスポンスを待つ秒数。これを超えると実行は TIMED_OUT とマークされます。
  4. Send をクリックします。

Fleetsはデバイスにコマンドをパブリッシュし、実行レコードを作成します。実行状況は Commands & Jobs ページの Commands タブに表示されます。

コマンド実行の流れ

  1. Fleetsは以下のトピックにパブリッシュします:$emqx/commands/things/{thingName}/executions/{executionId}/request
    json
    {
      "commandId": "...",
      "action": "setTemperature",
      "params": { "value": 24 },
      "timestamp": 1748390400,
      "ttl": 30
    }
  2. デバイスはリクエストを受信し、アクションを実行後、以下のトピックにレスポンスをパブリッシュします:$emqx/commands/things/{thingName}/executions/{executionId}/response
    json
    {
      "status": "SUCCEEDED",
      "result": { "currentTemperature": 24 }
    }
  3. EMQXはレスポンスをFleetsにルーティングし、Fleetsは実行ステータスを更新します。

コマンド実行結果の確認

  1. Commands & Jobs > Commands タブに移動します。
  2. テーブルには各実行の Execution IDThingsActionStatusCreated At のタイムスタンプが表示されます。
  3. 実行IDをクリックすると、パラメータやレスポンスペイロードを含む詳細な実行内容を確認できます。

commands_list

コマンド一覧のフィルタリング

Commandsタブ上部のフィルター機能を使って一覧を絞り込みます:

  • Thing IDでフィルター:特定のデバイスのコマンドを表示
  • Actionでフィルター:特定のアクション名のコマンドを表示
  • Status:実行ステータスでフィルター(SENTSUCCEEDEDFAILEDREJECTEDTIMED_OUTCANCELED

API経由でコマンドを送信する

text
POST /api/v1/commands

リクエストボディ例:

json
{
  "thingId": "thermostat-001",
  "action": "setTemperature",
  "params": { "value": 24 },
  "ttl": 30
}
  • params:任意。デバイスに渡す入力パラメータのJSONオブジェクト。
  • ttl:任意。タイムアウト秒数。指定時間内にデバイスが応答しない場合、実行ステータスは TIMED_OUT になります。

レスポンスにはステータス確認に使う executionId が含まれます:

text
GET /api/v1/commands/{executionId}

次のステップ