# Things

Thingは、EMQX Fleetsに登録された個別のデバイス識別子です。各Thingは名前とMQTTクライアントIDを持ち、オプションでスキーマを定義するThing Typeに関連付けることができます。

## Thingの登録

1. Fleetsのデプロイメントで、**デバイス管理** > **Things** に移動します。
2. **+ Register Thing** をクリックします。
3. 以下の項目を入力します：
   - **Name**（必須）：デプロイメント内で一意のデバイス識別子です。MQTTトピックやAPI呼び出しで `{thingName}` として使用されます。
   - **MQTT Client ID**（必須）：このデバイスが使用するMQTTの`CONNECT`パケットのクライアントIDです。物理デバイスがEMQXブローカーに接続する際に送信するクライアントIDと一致している必要があります。
   - **Thing Type**（任意）：このデバイスにThing Typeを関連付け、そのスキーマを継承します。
   - **Group**（任意）：デバイスをThingグループに割り当てます。
   - **Tags**（任意）：このデバイスに関連付けるタグです。
4. **Confirm** をクリックします。

![register_thing](./_assets/register_thing.png)

Thingは初期状態で**オフライン**として作成されます。設定したMQTTクライアントIDを使ってデバイスがEMQXブローカーに接続すると、**オンライン**になります。

## Thingの識別フィールド

各Thingには異なる用途の3つの識別フィールドがあります：

| フィールド | 用途 |
|---|---|
| **Thing ID** | システム生成のUUID。内部処理およびAPIパスパラメータで使用されます。 |
| **Name** | すべての`$emqx/things/{thingName}/...` MQTTトピックおよびAPIリクエストボディでの`{thingName}`として使用されます。 |
| **MQTT Client ID** | MQTTの`CONNECT`パケットのクライアントID。接続のライフサイクル管理（オンライン／オフライン状態）に使用されます。 |

NameとMQTT Client IDは同じでも問題ありませんが、独立したフィールドです。例えば、Thing名が`sensor-001`で、MQTTクライアントIDも`sensor-001`の場合があります。

## Thingのステータス

| ステータス | 意味 |
|---|---|
| **online** | デバイスが現在EMQXブローカーに接続中です。 |
| **offline** | デバイスが現在接続していません。 |

ステータスはMQTTの接続・切断イベントに基づいて自動的に更新されます。

## Thingの詳細表示

リスト内のThing名をクリックすると詳細ページが開きます。ページ上部には4つのサマリーカードが表示されます：

- **Status**：現在の接続ステータスと最終オンライン日時。
- **Thing Type**：関連付けられたThing Typeの名前とID。
- **Schema**：Thing Typeから継承したプロパティ、イベント、コマンドの数（`properties / events / commands`）。
- **Relationships**：タグとThingグループの数（`tags / groups`）。

![view_thing_details](./_assets/view_thing_details.png)

詳細ページには以下のタブがあります：

### Details

Thingの識別情報とタイムスタンプを表示します：

| フィールド | 説明 |
|---|---|
| Thing ID | システム生成の一意の識別子 |
| MQTT Client ID | 登録時に設定されたMQTTクライアントID |
| Status | 現在の接続ステータス |
| Updated At | Thingレコードが最後に更新された日時 |
| Last Offline | デバイスが最後に切断された日時 |
| Name | Thing名 |
| Thing Type | 関連付けられたThing Type |
| Created At | Thingが登録された日時 |
| Last Online | デバイスが最後に接続した日時 |

### Properties

Thing Typeスキーマで定義されたプロパティを一覧表示します。以下の列があります：

| 列 | 説明 |
|---|---|
| Name | プロパティ名 |
| Type | データ型（`string`、`int`、`float`、`boolean`、`enum`） |
| Details | 書き込み可能かどうか、単位、値の範囲（該当する場合） |
| Description | プロパティの説明 |

![thing_details_properties](./_assets/thing_details_properties.png)

### Events

Thing Typeスキーマで定義されたイベントを一覧表示します。以下の列があります：

| 列 | 説明 |
|---|---|
| Name | イベント名 |
| Severity | `info`、`warn`、`error` |
| Description | イベントの説明 |

![thing_details_events](./_assets/thing_details_events.png)

### Commands

Thing Typeスキーマで定義されたコマンドを一覧表示します。**+ Send Command** をクリックすると、この詳細ページから直接デバイスにコマンドを送信できます。

| 列 | 説明 |
|---|---|
| Name | コマンド名 |
| Type | コマンドタイプ（`sync`） |
| Details | 入力パラメータ、出力パラメータ、タイムアウト |
| Description | コマンドの説明 |

![thing_details_commands](./_assets/thing_details_commands.png)

### Relationships

デバイスが所属するThingグループと割り当てられたタグを表示します：

- **Thing Groups**：名前と説明でグループを一覧表示。
- **Tags**：タグはチップ形式で表示。

![thing_details_relationships](./_assets/thing_details_relationships.png)

### Jobs

このデバイスを対象としたジョブ実行の一覧です。**Status**フィルターで絞り込みが可能です。

| 列 | 説明 |
|---|---|
| Job ID | ジョブ実行の詳細へのリンク |
| Attempt | 実行試行回数 |
| Status | 現在の実行ステータス |
| Shadow Version | 実行時のシャドウバージョン |
| Error Message | 実行失敗時のエラー詳細 |
| Updated At | 実行が最後に更新された日時 |

![thing_details_jobs](./_assets/thing_details_jobs.png)

## Thingsのエクスポートとインポート

ThingsをJSONファイルとしてエクスポートするには、チェックボックスで1つ以上のThingを選択し、**Export**をクリックします。

JSONファイルからThingsをインポートするには、**Import**をクリックしてファイルを選択します。

## Thingの編集

1. **Things**リストで、**Actions**列の編集アイコンをクリックします。
2. 以下の項目を更新します：
   - **Name**（必須）
   - **MQTT Client ID**（必須）
   - **Thing Type**（任意）
   - **Group**（任意）：選択したグループのタグが**Group Tags**に表示され、読み取り専用です。
   - **Tags**（任意）
3. **Confirm**をクリックします。

## フィルターと検索

Thingsリストは以下の条件でフィルター可能です：

- **Thing Type**：特定のタイプのThingのみ表示。
- **Group**：特定のThingグループに所属するThingのみ表示。
- **Tags**：特定のタグを持つThingのみ表示。
- **Status**：`online`または`offline`で絞り込み。

検索アイコンを使ってThing名で検索できます。

## Thingの削除

1. **Things**リストで、**Actions**列の削除アイコンをクリックします。
2. 削除を確認します。

Thingを削除すると、その登録情報、シャドウ状態、グループ所属情報がすべて削除されます。

## 次のステップ

- [Thing Groups](./thing_groups.md)
- [Device Shadow](../device_shadow.md)
- [Device Query](../device_query.md)
- [Connect a Device via MQTT](../device_integration/mqtt_integration.md)
