Как получить текущий статус пограничных модулей IOT через Azure REST API? (не состояние соединения или статус из вызова API "Получить модули на устройстве")

Контекст:

Azure REST - модули - получение модулей на устройстве

Используя этот вызов API, я могу получить информацию о состоянии подключения (подключен / отключен) и состоянии (включен / отключен) модулей. Мы можем проверить состояние выполнения модулей, развернутых на устройстве, посетив веб-портал Azure Iot Hub portal.azure.com -> iot hub -> iot edge section -> select the device you wish to find the details for

Вопрос:  введите описание изображения здесь Как я могу получить это RUNTIME STATUS через Azure API? (см. рисунок).


person Chinni Srikar    schedule 10.09.2020    source источник


Ответы (1)


Если вы проверите модуль-двойник edgeAgent, он будет выглядеть следующим образом: -

{
  "deviceId": "edgeDevice",
  "moduleId": "$edgeAgent",
  "etag": "AAAAAAAAAEA=",
  "deviceEtag": "NDU1OTY3MjA=",
  "status": "enabled",
  "statusUpdateTime": "0001-01-01T00:00:00Z",
  "connectionState": "Disconnected",
  "lastActivityTime": "0001-01-01T00:00:00Z",
  "cloudToDeviceMessageCount": 0,
  "authenticationType": "sas",
  "x509Thumbprint": {
    "primaryThumbprint": null,
    "secondaryThumbprint": null
  },
  "version": 501,
  "properties": {
    "desired": {
      "schemaVersion": "1.0",
      "runtime": {
        "type": "docker",
        "settings": {
          "minDockerVersion": "v1.25",
          "loggingOptions": "",
          "registryCredentials": {
          }
        }
      },
      "systemModules": {
        "edgeAgent": {
          "type": "docker",
          "settings": {
            "image": "mcr.microsoft.com/azureiotedge-agent:1.0",
            "createOptions": "{}"
          }
        },
        "edgeHub": {
          "type": "docker",
          "status": "running",
          "restartPolicy": "always",
          "settings": {
            "image": "mcr.microsoft.com/azureiotedge-hub:1.0",
            "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
          }
        }
      },
      "modules": {
        "CustomModuleName": {
          "version": "1.0",
          "type": "docker",
          "status": "running",
          "restartPolicy": "always",
          "settings": {
            "image": "iotregdev300.azurecr.io/customModuleName:0.0.2-amd64",
            "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"8080/tcp\":[{\"HostPort\":\"8080\"}]}}}"
          }
        }
      }
    },
    "reported": {
      "schemaVersion": "1.0",
      "version": {
        "version": "1.0.9.4",
        "build": "32971639",
        "commit": "12d55e582cc7ce95c8abfe11eddfbbc938ed6001"
      },
      "lastDesiredStatus": {
        "code": 200,
        "description": ""
      },
      "runtime": {
        "platform": {
          "os": "linux",
          "architecture": "x86_64",
          "version": "1.0.9.4"
        },
        "type": "docker",
        "settings": {
          "minDockerVersion": "v1.25",
          "loggingOptions": "",
          "registryCredentials": {
          }
        }
      },
      "systemModules": {
        "edgeAgent": {
          "type": "docker",
          "exitCode": 0,
          "statusDescription": "running",
          "lastStartTimeUtc": "2020-09-09T07:34:34.4585643Z",
          "lastExitTimeUtc": "2020-09-09T07:34:26.9869915Z",
          "runtimeStatus": "running",
          "imagePullPolicy": "on-create",
          "settings": {
            "image": "mcr.microsoft.com/azureiotedge-agent:1.0",
            "imageHash": "sha256:1a2fffc3c74a2b2510a3149bb2295b68a553e4c9aca90698879902f36fd6d163",
            "createOptions": "{}"
          }
        },
        "edgeHub": {
          "type": "docker",
          "status": "running",
          "restartPolicy": "always",
          "imagePullPolicy": "on-create",
          "env": {},
          "exitCode": 0,
          "statusDescription": "running",
          "lastStartTimeUtc": "2020-09-09T07:34:50.8012461Z",
          "lastExitTimeUtc": "2020-09-09T07:34:26.9845717Z",
          "restartCount": 0,
          "lastRestartTimeUtc": "2020-09-09T07:34:26.9845717Z",
          "runtimeStatus": "running",
          "settings": {
            "image": "mcr.microsoft.com/azureiotedge-hub:1.0",
            "imageHash": "sha256:f531eb6c23f347c37ea8c90204e9cb12024aec77d8b2e68e93b14c38ec066520",
            "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
          }
        }
      },
      "lastDesiredVersion": 64,
      "modules": {
        "CustomModuleName": {
          "exitCode": 0,
          "statusDescription": "running",
          "lastStartTimeUtc": "2020-09-09T07:34:49.3923079Z",
          "lastExitTimeUtc": "2020-09-09T07:34:26.9606688Z",
          "restartCount": 0,
          "lastRestartTimeUtc": "2020-09-09T07:34:26.9606688Z",
          "runtimeStatus": "running",
          "version": "1.0",
          "status": "running",
          "restartPolicy": "always",
          "imagePullPolicy": "on-create",
          "type": "docker",
          "settings": {
            "image": "iotregdev300.azurecr.io/custommodulename:0.0.2-amd64",
            "imageHash": "sha256:e728d4b8804d2114beab7c1903f706d8152e404be3f5601ee5e7371e8ac32ecf",
            "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"8080/tcp\":[{\"HostPort\":\"8080\"}]}}}"
          },
          "env": {}
        }
      }
    }
  }
}

В приведенном выше json CustomModuleName - это настраиваемый модуль, и у него есть поле с именем runtimeStatus: "running". Такое же поле существует и в модулях edgeHub и edgeAgent. Поэтому вам нужно просто загрузить edgeAgentTwin через REST API или SDK для устройства / службы Azure.

person iAviator    schedule 10.09.2020
comment
Спасибо за ответ. После того, как я разместил вопрос, в конце концов я попал на DeviceTwins. - person Chinni Srikar; 11.09.2020
comment
Можете ли вы проголосовать за и принять ответ, чтобы он кому-то помог? - person iAviator; 11.09.2020
comment
Я уже сделал это в то же время, когда написал предыдущий комментарий - person Chinni Srikar; 11.09.2020