EMQX Fleets の始め方
このガイドでは、デバイスモデルの定義、デバイスの登録、Device Shadow を使った状態の同期、リアルタイムコマンドの送信までの一連のワークフローを説明します。最後には、動作する Fleets のデプロイメントを構築し、コアコンセプトを理解できるようになります。
前提条件
- 有効なプロジェクトを持つ EMQX Cloud アカウント。
- Running 状態の EMQX Fleets デプロイメント。EMQX Fleets は現在アーリーアクセス段階です。EMQX Fleets デプロイメントの作成を参照してアクセスをリクエストしてください。
- Fleets デプロイメントと同じプロジェクト内にある Running 状態の EMQX ブローカーのデプロイメント。Fleets はすべてのデバイス通信を関連付けられたブローカー経由でルーティングします。
- (任意)テレメトリイベントやシャドウ履歴などの時系列データを保存したい場合は、同じプロジェクト内に EMQX Tables のデプロイメント。ガイドの完了には必須ではありません。
- MQTT 経由で EMQX ブローカーに接続可能なデバイスまたはアプリケーション。
概要
以下のステップを完了します:
- デバイススキーマを定義する Thing Type を作成。
- Thing(デバイスインスタンス)を登録。
- デバイスを EMQX ブローカーに接続。
- コンソールから Desired シャドウ状態を更新。
- リアルタイムコマンドを送信し、結果を確認。
このガイドで使用する例のデバイスは、温度を報告し setTemperature コマンドを受け付けるスマートサーモスタットです。
ステップ 1: Thing Type の作成
Thing Type は、デバイスのカテゴリに対するスキーマを定義し、報告するプロパティや受け付けるコマンドを含みます。詳細は Thing Types を参照してください。
- EMQX Cloud コンソールで Fleets デプロイメントを開きます。
- 左メニューから Device Management > Thing Types に移動。
- + New Type をクリック。
- 名前に
com.example.thermostatを入力。 - (任意)説明に
Thermostat device type for quick startを入力。 - Confirm をクリック。
新しい Thing Type がリストに表示されます。com.example.thermostat (default) という名前のデフォルト Thing Group が自動的に作成されます。
次に、ステップ 5 でコマンド送信時に setTemperature が利用できるよう、コマンド定義を追加します:
com.example.thermostatエントリをクリックして開き、Edit Type をクリック。- Commands セクションで + Add をクリック。
- Add Command ダイアログで以下を入力:
- Name:
setTemperature - Type:
sync - Input: + Add をクリックし、
valueという名前で型はfloatのパラメータを追加。
- Name:
- ダイアログを閉じるために Confirm をクリックし、Save をクリック。
ステップ 2: Thing の登録
Thing は Fleets に登録された個々のデバイスIDです。詳細は Things を参照してください。
- 左メニューから Device Management > Things に移動。
- + Register Thing をクリック。
- 以下を入力:
- Name:
thermostat-001 - MQTT Client ID:
thermostat-001 - Thing Type:
com.example.thermostat
- Name:
- Confirm をクリック。
デバイスは現在 offline 状態で登録されます。上記の MQTT Client ID を使ってデバイスが接続すると online 状態に変わります。
ステップ 3: デバイスの接続
Fleets デプロイメントと同じプロジェクト内の EMQX ブローカーにデバイスを接続します。物理デバイスがない場合はクライアントツールでシミュレート可能です。
EMQX ブローカーのデプロイメントの Overview ページに移動し、Connection Information セクションで接続情報(ホスト、ポート、認証情報)を確認。
以下のパラメータでデバイスを接続:
- Client ID: Thing 登録時に設定した値(このガイドでは
thermostat-001) - Host / Port: ブローカーの MQTT Connection Information から
- Username / Password: ブローカーの Access Control -> Authentication 設定で構成済み

- Client ID: Thing 登録時に設定した値(このガイドでは
接続後、以下のトピックをサブスクライブ:
Desired 状態の変更を受け取るためのシャドウデルタトピック:
text$emqx/things/thermostat-001/shadow/update/deltaリアルタイムコマンドを受け取るためのコマンドリクエストトピック:
text$emqx/commands/things/thermostat-001/executions/+/request
接続とサブスクライブが完了すると、Things リストのデバイス状態が online に変わります。
必要なトピックのサブスクライブやメッセージ形式の詳細は MQTT Integration を参照してください。
ステップ 4: Desired シャドウ状態の更新
Device Shadow により、デバイスがオンラインでなくても到達してほしい状態を宣言できます。詳細は Device Shadow を参照してください。
左メニューから Shadow Sync に移動。
Things リストから
thermostat-001を選択。Target state (Desired) パネルに以下を入力:
json{ "targetTemperature": 22 }Update Desired をクリック。

Fleets は現在の報告状態と新しい Desired 状態の差分を計算し、デバイスに以下のトピックでパブリッシュします:
$emqx/things/thermostat-001/shadow/update/deltaデバイスはデルタトピックでメッセージを受信します:
{
"version": 1,
"timestamp": 1780298203,
"state": {
"targetTemperature": 22
},
"metadata": {
"targetTemperature": {
"timestamp": 1780298203
}
}
}デバイスはデルタを読み取り変更を適用し、新しい報告状態を以下のトピックにパブリッシュします。MQTT クライアントを使って以下をパブリッシュしてください:
- Topic:
$emqx/things/thermostat-001/shadow/update - Payload:json
{"state": {"reported": {"targetTemperature": 22, "temperature": 21.5}}}
パブリッシュ後、Fleets デプロイメントの Shadow Sync に戻り、ページを更新すると Current state (Reported) が更新されているのが確認できます。

ステップ 5: リアルタイムコマンドの送信
コマンドは接続されたデバイスに直接送信されるリクエスト-レスポンスのやり取りです。詳細は Commands & Jobs を参照してください。
- 左メニューから Commands & Jobs に移動。
- + Send Command をクリック。
- 以下を入力:
- Thing:
thermostat-001 - Action:
setTemperature - Parameters: value に
24を設定
- Thing:
- Send Command をクリック。
Fleets は以下のトピックにコマンドをパブリッシュします:
$emqx/commands/things/thermostat-001/executions/{executionId}/requestデバイスはリクエストを受け取り、アクションを実行後、以下のトピックにレスポンスをパブリッシュすることが期待されます:
$emqx/commands/things/thermostat-001/executions/{executionId}/responseこのガイドでは MQTT クライアントでデバイスをシミュレートしているため、自動的にレスポンスは送信されません。レスポンスがパブリッシュされるまで実行ステータスは SENT のままです。実際のデバイス統合では、デバイスコードがレスポンスをパブリッシュし、ステータスは SUCCEEDED または FAILED に更新されます。
コマンドが送信されたことを確認するには、Commands & Jobs > Commands タブに移動し、thermostat-001 の実行レコードが表示されていることを確認してください。実行 ID をクリックすると詳細が表示されます。

次にできること
これで、登録済みデバイス、シャドウ状態、送信済みコマンドを持つ動作する Fleets デプロイメントが完成しました。次のステップとして:
- Thing Types を管理 して実際のデバイスをモデリング
- デバイスをグループに整理 し、タグで動的メンバーシップを活用
- Device Query インターフェース を使ってデバイスフリートをクエリ
- MQTT または HTTPS を使った実デバイスの統合
- ジョブを作成 して複数デバイスへの一括操作を実行