1 回答

TA贡献1798条经验 获得超3个赞
批量导入设备方法背后是对 Azure IoT 中心面向服务的终结点的 REST API 调用。使用registryManager.ImportDevicesAsync方法是在 Azure IoT 中心命名空间中创建后台作业。接受作业后,将返回 jobId 以获取其轮询处理状态。
基本上,我们需要两个 REST API,例如 POST 和 GET 作业。更多细节可以在文档服务-创建导入导出作业和服务-获取导入导出作业中找到。
以下步骤显示如何使用 REST API 测试此批量导入设备作业:
使用最新的Microsoft Azure 存储资源管理器创建两个容器,例如一个用于输入,另一个用于输出日志消息。此外,此工具允许为这些容器生成带有 sas 令牌的完整 uri 地址。
创建一个名为devices.txt的文本文件,并包含以下内容(配置两个设备的示例):
{"id":"Device1", "importMode":"Create", "status":"enabled", "properties":{"desired":{"abcd":12345 } } }
{"id":"Device2", "importMode":"Create", "status":"enabled", "properties":{"desired":{"abcd":12345 } } }
将文件devices.txt上传到输入容器。
将作业发布到 Azure IoT 中心
POST https://{yourIoTHub}.azure-devices.net/jobs/create?api-version=2018-06-30
Authorization:{yourIoTHubSasToken}
body:
{
"inputBlobContainerUri": "{inputContainerUriWithSasToken}",
"outputBlobContainerUri": "{outputContainerUriWithSasToken}",
"inputBlobName": "devices.txt",
"type": "import"
}
回应应该是:
{
"jobId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"startTimeUtc": "2019-01-06T16:19:54.9535051Z",
"type": "import",
"status": "enqueued",
"progress": 0,
"inputBlobContainerUri": "xxxxxx",
"outputBlobContainerUri": "xxxxxx",
"excludeKeysInExport": false,
"useSecondaryStorageAsSource": false
}
轮询作业状态,直到作业完成、失败或取消
GET https://{yourIoTHub}.azure-devices.net/jobs/xxxxx-xxxx-xxxx-xxxxxxxxxxxx?api-version=2018-06-30
Authorization:{yourIoTHubSasToken}
响应:
{
"jobId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"startTimeUtc": "2019-01-06T16:19:54.9535051Z",
"endTimeUtc": "2019-01-06T16:20:11.4043137Z",
"type": "import",
"status": "completed",
"progress": 100,
"outputBlobContainerUri": "",
"excludeKeysInExport": false,
"useSecondaryStorageAsSource": false
}
请注意,上述步骤 4. 和 5. 可以使用 Azure Functions 来实现,以隐藏与存储和物联网中心相关的所有详细信息。
- 1 回答
- 0 关注
- 92 浏览
添加回答
举报