Alibaba Cloud の IoT Platform は、デバイスジョブの構成および管理サービスを提供します。デバイスバッチサービス呼び出しタスクとデバイスバッチプロパティ設定タスクの両方で Alink プロトコルを利用します。このトピックでは、デバイスジョブステータスの更新、最新のジョブ情報に対するデバイスリクエスト、およびサブタスクステータスの更新を含む、タスク更新メッセージトピックと Alink データ形式のカスタマイズの概要について説明します。
背景情報
カスタムタスクを実装するには、デバイス側でタスク管理機能を開発する必要があります。詳細な操作については、「デバイスジョブ」をご参照ください。
デバイスバッチサービス呼び出しタスクとデバイスバッチプロパティ設定タスクの場合、デバイス側の Link SDK がサービス呼び出しとプロパティ設定機能を統合している場合は、デバイスジョブを実行するために追加のタスク管理機能を開発する必要はありません。
デバイス側の Link SDK へのサービス呼び出しとプロパティ設定機能の統合方法については、「デバイスアクセス概要」のそれぞれの Link SDK の Thing Specification Language 開発方法を参照してください。
サービス呼び出しとプロパティ設定に使用される Alink プロトコルの説明については、「デバイスのプロパティ、イベント、およびサービス」をご参照ください。
デバイスジョブステータスの更新通知
通知は、デバイスジョブのステータスが「処理中」、「キャンセル済み」、または「削除済み」に変更された場合にのみデバイスに送信されます。
ダウンストリーム。
トピック: /sys/${productKey}/${deviceName}/thing/job/notify。
Alink JSON 形式のリクエスト例:
{
"id": "7542940",
"version": "1.0",
"params": {
"task": {
"taskId": "i5Ks6***pF010101",
"status": "SENT", // スケジュール済み
"jobDocument": {},
"jobFile":{
"signMethod":"Md5", // 署名方式
"sign":"wssxff56dhdsd***", // 署名パラメータ
"fileUrl": "https://iotx-***.oss-cn-shanghai.aliyuncs.com/***.zip" // タスクファイルのダウンロード URL
}
}
}
}表 1. リクエストパラメータの説明
パラメータ | タイプ | 説明 |
id | String | メッセージの ID。有効な値: 0 ~ 4294967295。各メッセージ ID は、現在のデバイスに対して一意である必要があります。 |
version | String | プロトコルのバージョン。このパラメータを 1.0 に設定します。 |
params | Object | リクエストパラメータのリスト。 |
task | Object | サブタスクのパラメータ。 |
taskId | String | サブタスクの ID。グローバルに一意の識別子です。 |
status | String | サブタスクのステータス。
|
jobDocument | Object | タスク実行ルールを記述したジョブドキュメント。 説明 status が REMOVED または CANCELLED の場合、このフィールドは空です。 |
jobFile | Object | カスタムタスクの作成時にアップロードされたファイル情報。
説明 ```html status が REMOVED または CANCELLED の場合、このフィールドは空です。 |
Alink JSON 形式のレスポンス例:
{
"id": "7542940",
"code": 200,
"data": {}
}表 2. レスポンスパラメータの説明
パラメータ | タイプ | 説明 |
id | String | メッセージの ID。有効な値: 0 ~ 4294967295。各メッセージ ID は、現在のデバイスに対して一意である必要があります。 |
code | Integer | レスポンスの HTTP ステータスコード。値 200 は、リクエストが成功したことを示します。その他の値は、リクエストが失敗したことを示します。詳細については、「デバイスから返される一般的なコード」をご参照ください。 |
data | Object | デバイスから返されたデータ。デバイスジョブの更新通知によって返される結果データは空です。 |
デバイスジョブの詳細を取得する
アップストリーム。
リクエストトピック:
/sys/${productKey}/${deviceName}/thing/job/get。レスポンストピック:
/sys/${productKey}/${deviceName}/thing/job/get_reply。
Alink JSON 形式のリクエスト例:
{
"id": "123",
"version": "1.0",
"params": {
"taskId": "i5Ks***F010101"
}
}表 3. リクエストパラメータの説明
パラメータ | タイプ | 説明 |
id | String | メッセージの ID。有効な値: 0 ~ 4294967295。各メッセージ ID は、現在のデバイスに対して一意である必要があります。 |
version | String | プロトコルのバージョン。このパラメータを 1.0 に設定します。 |
params | Object | リクエストパラメータのリスト。 |
taskId | String | 3 つの値メソッドは、異なるステータスでタスク情報を返すことができます。
|
taskId の値が異なると、Alink レスポンスデータ形式も異なります。
taskId がサブタスクの ID の場合:
{ "id": "1234", "code": 200, "data": { "statusDetails":{"devs":"test","status":"init"}, // デバイス上のタスク作成時のユーザー定義構成 "taskId": "i5Ks***F010101", "task":{ "taskId": "i5Ks***F010101", "status": "IN_PROGRESS", // 処理中 "jobDocument": {}, "jobFile":{ "signMethod":"Md5", // 署名方式 "sign":"wssxff56dhdsd***", // 署名パラメータ "fileUrl": "https://iotx-***.oss-cn-shanghai.aliyuncs.com/***.zip" // タスクファイルのダウンロード URL } } } }taskId が
$nextの場合:{ "id": "1234", "code": 200, "data": { "statusDetails":{"devs":"test","status":"init"}, // デバイス上のタスク作成時のユーザー定義構成 "taskId": "$next", "task":{ "taskId": "i5Ks***F010101", "status": "IN_PROGRESS", // 処理中 "jobDocument": {}, "jobFile":{ "signMethod":"Md5", // 署名方式 "sign":"wssxff56dhdsd***", // 署名パラメータ "fileUrl": "https://iotx-***.oss-cn-shanghai.aliyuncs.com/***.zip" // タスクファイルのダウンロード URL } } } }taskId が
$listの場合:{ "id": "1234", "code": 200, "data": { "statusDetails":{"devs":"test","status":"init"}, // デバイス上のタスク作成時のユーザー定義構成 "taskId": "$list", "task":[ { "taskId": "i5Ks***", "status": "IN_PROGRESS" // 処理中 }, { "taskId": "i61s***", "status": "IN_PROGRESS" // 処理中 } ] } }
表 4. レスポンスパラメータの説明
パラメータ | タイプ | 説明 |
id | String | メッセージの ID。有効な値: 0 ~ 4294967295。各メッセージ ID は、現在のデバイスに対して一意である必要があります。 |
code | Integer | レスポンスの HTTP ステータスコード。値 200 は、リクエストが成功したことを示します。その他の値は、リクエストが失敗したことを示します。詳細については、「デバイスから返される一般的なコード」をご参照ください。 |
data | Object | デバイスから返されたデータ。 |
task | Object | サブタスクのパラメータ。 |
taskId | String | サブタスクの ID。グローバルに一意の識別子です。 |
status | String | サブタスクのステータス。
|
statusDetails | JSON | デバイスでタスクを作成するときのユーザー定義構成。IoT Platform コンソールの [デバイス管理] > [タスク] > [タスクの詳細] ページで表示できます。 |
jobDocument | Object | タスク実行ルールを記述したジョブドキュメント。 |
jobFile | Object | カスタムタスクの作成時にアップロードされたファイル情報。
|
サブタスクステータスを更新する
アップストリーム。
リクエストトピック:
/sys/${productKey}/${deviceName}/thing/job/update。レスポンストピック:
/sys/${productKey}/${deviceName}/thing/job/update_reply。
Alink JSON 形式のリクエスト例:
{
"id": "123",
"version": "1.0",
"params": {
"taskId": "i5Ks***F010101",
"status": "IN_PROGRESS", // 処理中
"statusDetails": { // ユーザー定義ステータスの詳細
"key": "value"
},
"progress": 50 // 実行の進捗状況 (パーセント)
}
}表 5. リクエストパラメータの説明
パラメータ | タイプ | 説明 |
id | String | メッセージの ID。有効な値: 0 ~ 4294967295。各メッセージ ID は、現在のデバイスに対して一意である必要があります。 |
version | String | プロトコルのバージョン。このパラメータを 1.0 に設定します。 |
params | Object | リクエストパラメータのリスト。 |
taskId | String | サブタスクの ID。グローバルに一意の識別子です。 |
status | String | サブタスクのステータス。有効な値:
|
statusDetails | Object | カスタマイズ可能なユーザー定義ステータスの詳細。IoT Platform コンソールの ページで表示できます。 |
progress | Integer | サブタスクの実行の進捗状況 (パーセント)。 |
Alink JSON 形式のレスポンス例:
{
"id":"123",
"code":200,
"data":{
"taskId":"i5Ks***F010101"
}
}表 6. レスポンスパラメータの説明
パラメータ | タイプ | 説明 |
id | String | メッセージの ID。有効な値: 0 ~ 4294967295。各メッセージ ID は、現在のデバイスに対して一意である必要があります。 |
code | Integer | レスポンスの HTTP ステータスコード。値 200 は、リクエストが成功したことを示します。その他の値は、リクエストが失敗したことを示します。詳細については、「デバイスから返される一般的なコード」をご参照ください。 |
data | Object | デバイスから返されたデータ。 |
taskId | String | サブタスクの ID。グローバルに一意の識別子です。 |