【问题标题】:How to configure individual modules for 100+ edge devices如何为 100 多个边缘设备配置单个模块
【发布时间】: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


【解决方案1】:

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

关键是在自动部署(基础或分层)中引用所需属性的特定部分。在您的示例中-

"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>"
          }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    相关资源
    最近更新 更多