EzData2 は現在、MQTT および WebSocket の 2 種類の接続方式を提供しており、デバイス側でのデータ通信を実装できます。デバイス接続前に、ハードウェアデバイスの MAC アドレスを使用して登録インターフェースを呼び出し、Device Token を取得する必要があります。登録が完了し、Device Token を正常に取得した後、my.m5stack.com にアクセスして個人アカウントでログインし、Add Group をクリックして Token オプションを選択します。Device Token をコピー&ペーストして作成することで、Device Token とアカウントの紐付けが完了します。単一デバイスの Device Token は、1 つのデータセット Group に相当します。デバイス側は、以下の通信プロトコルを参照し、Device Token によるログイン認証後、データフィールドの追加・削除・更新・参照(CRUD)を行うことができます。
| コード | タイプ | 説明 |
|---|---|---|
| 100 | データ操作 | デバイス側でデータを追加 |
| 101 | データ操作 | デバイス側でデータを更新 |
| 102 | データ操作 | デバイス側でデータを削除 |
| 103 | データ照会 | デバイス側でデータ一覧を照会 |
| 104 | データ照会 | デバイス側でデータ詳細を照会 |
| 105 | ファイルアップロード | デバイス側でファイルをアップロード(通知) |
| 106 | ユーザー操作 | ユーザー側で QR コードをスキャン |
| 107 | ユーザー操作 | ユーザー側でデータを更新 |
| 108 | ユーザー操作 | ユーザー側でデータを削除 |
| 109 | ユーザー操作 | ユーザー側でデータを追加 |
| 500 | エラー | デバイス側のリクエストエラー |
リクエストインターフェース:
https://ezdata2.m5stack.com/api/v2/device/registerMacPOSTdeviceToken を生成します。リクエストパラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
| deviceType | string | 開発ボード定義 内の Product name フィールドを参照 |
| mac | string | デバイスの MAC アドレス。「:」なし、大小文字は区別しません |
{
"deviceType": "basic",
"mac": "AABBCCDDEEFF"
} レスポンスパラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
| code | int | ステータスコード(0 は成功) |
| data | string | 返却される deviceToken |
| msg | string | レスポンスメッセージ |
{
"code": 0,
"data": "4fbb52fb5b6243e083377f45d216820f",
"msg": "success"
} リクエストインターフェース:
https://ezdata2.m5stack.com/api/v2/device/uploadDeviceFilePOST (multipart/form-data)cmd: 105 のレスポンスメッセージを配信します。リクエストパラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
| deviceToken | string | デバイストークン |
| file | file | アップロードするファイル |
レスポンスパラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
| code | int | ステータスコード(200 は成功) |
リクエストインターフェース:
wss://ezdata2.m5stack.com/wsWebSocketリクエストインターフェース:
リクエストパラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
| deviceToken | string | デバイストークン |
{
"deviceToken": "4fbb52fb5b6243e083377f45d216820f"
} レスポンスパラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
| - | string | ログイン成功メッセージ |
device Login successful リクエストインターフェース:
リクエストパラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
| deviceToken | string | デバイストークン |
| body | string | ハートビート信号(固定値: "ping") |
{
"deviceToken": "4fbb52fb5b6243e083377f45d216820f",
"body": "ping"
} レスポンスパラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
| - | string | ハートビート応答 |
pong リクエストインターフェース:
uiflow2.m5stack.com1883MQTT 3.1.1接続パラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
| 名称 | string | ez{mac}ez |
| ClientId | string | ez{mac}ez |
| ユーザー名 | string | {deviceToken}(デバイストークン) |
| Password | string | パスワード不要 |
Topic:
| トピック | 方向 | 説明 |
|---|---|---|
$ezdata/{deviceToken}/up | Publish | 上りデータ |
$ezdata/{deviceToken}/down | Subscribe | 下りデータ |
説明:
以下は WebSocket または MQTT のメッセージボディ内容です。
リクエストインターフェース:
100リクエストパラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
| deviceToken | string | デバイストークン |
| body.name | string | データフィールド名 |
| body.value | string | データフィールド値 |
| body.requestType | int | リクエストタイプ(固定値: 100) |
{
"deviceToken": "4fbb52fb5b6243e083377f45d216820f",
"body": {
"name": "adasd",
"value": "ddsad",
"requestType": 100
}
} レスポンスパラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
| cmd | int | コマンドコード(100) |
| code | int | ステータスコード(200 は成功) |
| body.deviceToken | string | デバイストークン |
| body.name | string | データフィールド名 |
| body.value | string | データフィールド値 |
{
"body": {
"deviceToken": "4fbb52fb5b6243e083377f45d216820f",
"name": "adasd",
"value": "ddsad"
},
"cmd": 100,
"code": 200
} リクエストインターフェース:
101リクエストパラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
| deviceToken | string | デバイストークン |
| body.name | string | データフィールド名 |
| body.value | string | データフィールド値 |
| body.requestType | int | リクエストタイプ(固定値: 101) |
{
"deviceToken": "4fbb52fb5b6243e083377f45d216820f",
"body": {
"name": "adasd",
"value": "ddsad",
"requestType": 101
}
} レスポンスパラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
| cmd | int | コマンドコード(101) |
| code | int | ステータスコード(200 は成功) |
| body.deviceToken | string | デバイストークン |
| body.name | string | データフィールド名 |
| body.value | string | データフィールド値 |
{
"body": {
"deviceToken": "4fbb52fb5b6243e083377f45d216820f",
"name": "adasd",
"value": "ddsad"
},
"cmd": 101,
"code": 200
} リクエストインターフェース:
102リクエストパラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
| deviceToken | string | デバイストークン |
| body.name | string | データフィールド名 |
| body.value | string | データフィールド値 |
| body.requestType | int | リクエストタイプ(固定値: 102) |
{
"deviceToken": "4fbb52fb5b6243e083377f45d216820f",
"body": {
"name": "adasd(3)",
"value": "ddsad",
"requestType": 102
}
} レスポンスパラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
| cmd | int | コマンドコード(102) |
| code | int | ステータスコード(200 は成功) |
| body.deviceToken | string | デバイストークン |
| body.name | string | データフィールド名 |
| body.value | string | データフィールド値 |
{
"body": {
"deviceToken": "4fbb52fb5b6243e083377f45d216820f",
"name": "adasd(3)",
"value": "ddsad"
},
"cmd": 102,
"code": 200
} リクエストインターフェース:
103リクエストパラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
| deviceToken | string | デバイストークン |
| body.requestType | int | リクエストタイプ(固定値: 103) |
{
"deviceToken": "4fbb52fb5b6243e083377f45d216820f",
"body": {
"requestType": 103
}
} レスポンスパラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
| cmd | int | コマンドコード(103) |
| code | int | ステータスコード(200 は成功) |
| body [].id | string | データ ID |
| body [].dataToken | string | データトークン |
| body [].name | string | データフィールド名 |
| body [].value | string | データフィールド値 |
| body [].createTime | long | 作成時間(ミリ秒タイムスタンプ) |
| body [].updateTime | long | 更新時間(ミリ秒タイムスタンプ) |
{
"body": [
{
"createTime": 1751274100000,
"dataToken": "6a330c4bf0924da3a2b11c833f9c2db1",
"id": "6a330c4bf0924da3a2b11c833f9c2db1",
"name": "adasd",
"updateTime": 1751274100000,
"value": "ddsad"
},
{
"createTime": 1751274119000,
"dataToken": "60ea29ff4df446358b7bf2151939abb4",
"id": "60ea29ff4df446358b7bf2151939abb4",
"name": "adasd(1)",
"updateTime": 1751274119000,
"value": "ddsad"
}
],
"cmd": 103,
"code": 200
} リクエストインターフェース:
104リクエストパラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
| deviceToken | string | デバイストークン |
| body.name | string | データフィールド名 |
| body.requestType | int | リクエストタイプ(固定値: 104) |
{
"deviceToken": "4fbb52fb5b6243e083377f45d216820f",
"body": {
"name": "adasd",
"requestType": 104
}
} レスポンスパラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
| cmd | int | コマンドコード(104) |
| code | int | ステータスコード(200 は成功) |
| body.id | string | データ ID |
| body.dataToken | string | データトークン |
| body.name | string | データフィールド名 |
| body.value | string | データフィールド値 |
| body.createTime | long | 作成時間(ミリ秒タイムスタンプ) |
| body.updateTime | long | 更新時間(ミリ秒タイムスタンプ) |
{
"body": {
"createTime": 1751274100000,
"dataToken": "6a330c4bf0924da3a2b11c833f9c2db1",
"id": "6a330c4bf0924da3a2b11c833f9c2db1",
"name": "adasd",
"updateTime": 1751274100000,
"value": "ddsad"
},
"cmd": 104,
"code": 200
} 説明:
本メッセージは HTTP インターフェースでのアップロードによりトリガーされ、デバイス側は長時間接続を通じてレスポンスを受信します。
リクエストインターフェース:
https://ezdata2.m5stack.com/api/v2/device/uploadDeviceFile105レスポンスパラメータ(WebSocket/MQTT):
| パラメータ | 型 | 説明 |
|---|---|---|
| cmd | int | コマンドコード(105) |
| code | int | ステータスコード(200 は成功) |
| body.deviceToken | string | デバイストークン |
| body.name | string | ファイルフィールド名 |
| body.value | string | ファイル URL |
{
"body": {
"deviceToken": "4fbb52fb5b6243e083377f45d216820f",
"name": "deviceFile",
"value": "https://ezdata2-oss-dev.m5stack.com/37a6259cc0c1dae299a7866489dff0bd/deviceFile/deviceFile.jpg"
},
"cmd": 105,
"code": 200
}