【发布时间】:2020-06-30 23:57:09
【问题描述】:
我有 100 多个带有多个模块的边缘设备,由自动部署管理。每个设备都有自己的特性,例如最大允许值。我们还有一个外部模块,它需要每个设备唯一的帐户凭据(id/password/certificate/key)。
我试过了:
- 直接/手动更新模块孪生,但由于我们对所有其他设置和配置使用自动部署,这会失败,请参阅 IotEdge module twin update gets reverted
- 在分层部署中使用模块孪生更新。这可行,但是我们必须为每个设备创建分层部署。仅有的 iot hub 支持 100 个部署,因此不可扩展。
我怎样才能做到这一点? IoT Edge 是否对此有推荐的方法/支持/解决方法?还是我们应该自己构建一些东西?
启用外部模块并设置属性默认值的分层部署示例:
"content": {
"modulesContent": {
"$edgeAgent": {
"properties.desired.modules.externalModule1": {
"settings": {
"image": "123.azurecr.io/externalModule1:0.1.12",
"createOptions": "{\"NetworkingConfig\":{\"EndpointsConfig\":{\"host\":{}}},\"HostConfig\":{\"NetworkMode\":\"host\",\"LogConfig\":{\"Type\":\"json-file\",\"Config\":{\"max-size\":\"10m\",\"max-file\":\"3\"}}}}"
},
"type": "docker",
"status": "running",
"restartPolicy": "always",
"version": "1.0"
}
},
"externalModule1": {
"properties.desired": {
"MaxChargePower": 5000,
"MaxDischargePower": 10000
}
}
}
}
}
设置设备特定值的分层部署示例:
{
"content": {
"modulesContent": {
"$edgeAgent": {},
"externalModule1": {
"properties.desired.MaxChargePower": 6000,
"properties.desired.MaxDischargePower": 15000,
"properties.desired.iotpool_account": {
"iotpool_id" : "<insert iotpool id>",
"iotpool_password" : "<insert iotpool password>",
"cert" : "<insert cert>",
"key" : "<insert key>"
}
}
}
}
}
【问题讨论】:
-
您是否有能力为需要执行设备特定行为的模块修改代码?
-
@VenkatYalla 是的,我们可以请求更改代码。
-
如何在基本部署中设置模块孪生?可以分享一下sn-p吗?
-
@VenkatYalla 我已经用我们正在使用的部署 json 更新了任务。
标签: azure-iot-edge