如何为 100+ 边缘设备配置单个模块



>我有 100+ 个具有多个模块的边缘设备,由自动部署管理。每个设备都有自己的特征,例如允许的最大值。我们还有一个外部模块,它需要每个设备唯一的帐户凭据(ID/密码/证书/密钥(。

我试过了:

  • 直接/手动更新模块孪生,但这会失败,因为我们对所有其他设置和配置使用自动部署,请参阅 物联网边缘模块孪生更新被还原
  • 将模块孪生更新与分层部署结合使用。这有效,但是我们必须为每个设备创建一个分层部署。只 IoT 中心支持 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>"
}
}
}
}
}

可以直接按设备修改模块孪生,而无需针对设备的自动部署覆盖它。

关键是在自动部署(基本或分层(中引用所需属性的特定部分。在你的例子中——

"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": {
"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.powerSettings": {
"MaxChargePower": 5000,
"MaxDischargePower": 10000
}
}
}
}

现在,可以使用模块孪生专门化每个设备,而不会覆盖它。无需使用嵌套部署,因此不会遇到部署数限制:

"properties.desired.iotpool_account": {
"iotpool_id" : "<insert iotpool id>",
"iotpool_password" : "<insert iotpool password>",
"cert" : "<insert cert>",
"key" : "<insert key>"
}

最新更新