Compartilhar via


Integração de sensores como cliente

Siga as etapas para integrar com um parceiro de sensor para permitir que o parceiro comece a enviar os dados para sua instância do Data Manager for Agriculture.

Cada parceiro de sensor tem seu próprio aplicativo Microsoft Entra multilocatário criado e publicado na plataforma Data Manager for Agriculture. O parceiro de sensor suportado por padrão na plataforma é a Davis Instruments (sensorPartnerId: DavisInstruments).

Para começar a usar os parceiros de sensor integrados, você precisa dar consentimento ao parceiro de sensor para que eles comecem a aparecer no App Registrations. Os passos a seguir:

  1. Faça logon no portal do Azure usando credenciais de "Administrador Global" ou "Administrador de Função Privilegiada".

  2. Para Davis Instruments, clique neste link para fornecer consentimento.

  3. Na página de revisão de permissão, o aplicativo Microsoft Entra solicita permissão mínima de "ler perfil de usuário". Esse nível de permissão é suficiente para a integração do sensor com o Data Manager for Agriculture.

  4. Clique no botão "Aceitar" para conceder o consentimento do administrador.

  5. Agora, procure Davis Instruments WeatherLink Data Manager for Agriculture Connector na guia Todos os aplicativos na página (ilustrada com um parceiro genérico na App Registrations imagem).

    Screenshot showing the partners message.

  6. Copie a ID do aplicativo (cliente) para o aplicativo parceiro específico ao qual você deseja fornecer acesso.

Etapa 2: Adicionar atribuição de função ao aplicativo parceiro

A próxima etapa é atribuir funções no portal do Azure para fornecer autorização ao aplicativo parceiro do sensor. O Data Manager for Agriculture usa o RBAC do Azure para gerenciar solicitações de autorização.

Faça logon no portal do Azure e navegue até seu Grupo de Recursos onde você criou o recurso Gerenciador de Dados para Agricultura.

Observação

Dentro da guia do grupo de recursos, se você não encontrar o recurso Data Manager for Agriculture criado, será necessário habilitar a caixa de seleção Mostrar tipos ocultos .

Você encontra a opção de menu do IAM (Identity Access Management) no lado esquerdo do painel de opções, conforme mostrado na imagem:

Screenshot showing role assignment.

Clique em Adicionar > atribuição de função, esta ação abre um painel no lado direito do portal, escolha a função na lista suspensa:

  • AgFood Platform Sensor Partner Contributor - tem todos os privilégios nas operações CRU (Create, Read, Update) que são específicas para sensores.

Para concluir a atribuição de função, execute as seguintes etapas:

  1. Escolha a função mencionada.

  2. Escolha Usuário, grupo ou entidade de serviço na seção Atribuir acesso.

  3. Cole o Nome ou ID do aplicativo parceiro do sensor na seção Selecionar (conforme mostrado na imagem).

  4. Clique em Salvar para atribuir a função.

Screenshot showing app selection for authorization.

Esta etapa garante que o aplicativo parceiro de sensor tenha acesso concedido (com base na função atribuída) ao Azure Data Manager for Agriculture Resource.

Etapa 3: Habilitar a integração do sensor

  1. Você precisa habilitar a integração do sensor antes de iniciar chamadas. Esta etapa provisiona recursos internos do Azure necessários para integração de sensores em sua instância do Data Manager for Agriculture. Você pode fazer isso executando o seguinte comando armclient .

    armclient patch /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.AgFoodPlatform/farmBeats/<farmbeats-instance-name>?api-version=2021-09-01-preview "{properties:{sensorIntegration:{enabled:'true'}}}"
    

    Saída de exemplo:

    {
      "id": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.AgFoodPlatform/farmBeats/<farmbeats-instance-name>",
      "type": "Microsoft.AgFoodPlatform/farmBeats",
      "sku": {
        "name": "A0"
      },
      "systemData": {
        "createdBy": "<customer-id>",
        "createdByType": "User",
        "createdAt": "2022-03-11T03:36:32Z",
        "lastModifiedBy": "<customer-id>",
        "lastModifiedByType": "User",
        "lastModifiedAt": "2022-03-11T03:40:06Z"
      },
      "properties": {
        "instanceUri": "https://<farmbeats-instance-name>.farmbeats.azure.net/",
        "provisioningState": "Succeeded",
        "sensorIntegration": {
          "enabled": "True",
          "provisioningState": "**Creating**"
        },
        "publicNetworkAccess": "Enabled"
      },
      "location": "eastus",
      "name": "myfarmbeats"
    }
    
  2. O trabalho pode levar alguns minutos para ser concluído. Para saber o status do trabalho, você pode usar o seguinte comando armclient:

    armclient get /subscriptions/<subscription-id>/resourceGroups/<resource-group-name> /providers/Microsoft.AgFoodPlatform/farmBeats/<farmbeats-instance-name>?api-version=2021-09-01-preview
    
  3. Para verificar o status concluído, examine o atributo provisioningState . O status precisa mudar para "Bem-sucedido" de "Criando" na etapa anterior.

    Saída de exemplo:

    {
      "id": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.AgFoodPlatform/farmBeats/<farmbeats-instance-name>",
      "type": "Microsoft.AgFoodPlatform/farmBeats",
      "sku": {
        "name": "A0"
      },
      "systemData": {
        "createdBy": "<customer-id>",
        "createdByType": "User",
        "createdAt": "2022-03-11T03:36:32Z",
        "lastModifiedBy": "<customer-id>",
        "lastModifiedByType": "User",
        "lastModifiedAt": "2022-03-11T03:40:06Z"
      },
      "properties": {
        "instanceUri": "https://<customer-host-name>.farmbeats.azure.net/",
        "provisioningState": "Succeeded",
        "sensorIntegration": {
          "enabled": "True",
          "provisioningState": "**Succeeded**"
        },
        "publicNetworkAccess": "Enabled"
      },
      "tags": {
        "usage": "<sensor-partner-id>"
      },
      "location": "eastus",
      "name": "<customer-id>"
    }
    

Com a etapa de integração do sensor concluída, agora você pode criar objetos de integração do sensor.

Etapa 4: Criar objeto de integração

Use a coleção e a SensorPartnerIntegrations chamada na API SensorPartnerIntegrations_CreateOrUpdate para criar um objeto de integração para um determinado parceiro de sensor. Cada cliente de um parceiro de sensor (por exemplo: Davis) precisa de um ID de integração exclusivo criado em seu recurso Data Manager for Agriculture.

Há dois caminhos diferentes que você precisa avaliar:

  • Se você for o proprietário dos sensores fornecidos pelos parceiros de sensores, crie apenas um objeto de integração (ID) para sua conta com o parceiro de sensor.

  • Se seus usuários finais (ou seja, Agricultores/Varejistas/Agrônomos) possuem os sensores, crie um objeto de integração (ID) exclusivo para cada usuário final, pois cada usuário final tem suas próprias contas com o parceiro do sensor.

Ponto de extremidade da API: PATCH /sensor-partners/{sensorPartnerId}/integrations/{integrationID}

Uma seção solicitando o link de consentimento faz parte do fluxo de integração do parceiro do sensor. Este link de consentimento é uma forma de os parceiros de sensor validarem se o cliente é um usuário válido do serviço. A integração do sensor está vinculada à chave de consentimento.

Nosso parceiro de sensores Davis Instruments usa essa interface do usuário para habilitar a configuração e solicitar o link de consentimento.

Os parceiros do sensor chamam o ponto de extremidade da API para verificar a check-consent validade. Para gerar um link de consentimento, você precisa usar a API e fornecer o ID de integração criado a SensorPartnerIntegrations_GenerateConsentLink partir da etapa (3). Como resposta, você obtém uma cadeia de caracteres chamada consentLink. Copie essa cadeia de caracteres e forneça-a ao parceiro do sensor para validação adicional. Se você estiver usando sensores da Davis Instruments, siga as instruções nesta página.

Ponto de extremidade da API: PATCH /sensor-partners/{sensorPartnerId}/integrations/{integrationId}/: generate-consent-link

Esta etapa marca a conclusão da integração do parceiro de sensor do ponto de vista do cliente. , obtenha todas as informações necessárias para chamar seus endpoints de API para criar modelo de sensor, modelo de dispositivo, sensores e dispositivos. Os parceiros agora podem enviar eventos de sensor por push usando a cadeia de conexão gerada para cada ID de sensor.

O passo final é começar a consumir eventos de sensores. Antes de consumir os eventos, você precisa criar um mapeamento de cada ID de sensor para um ID de participante e recurso específicos (Campo, Campo sazonal).

Etapa 6: Criar mapeamento de sensor

Use a coleção, chame a SensorMappingsSensorMappings_CreateOrUpdate API para criar mapeamento para cada um dos sensores. O mapeamento nada mais é do que associar um ID de sensor a um PartyID específico e a um recurso (campo, campo sazonal etc.). PartyID e recursos já estão presentes no sistema Data Manager for Agriculture. Essa associação garante que, como plataforma, você possa criar modelos de ciência de dados em torno de uma geometria comum da dimensão do recurso e da parte. Cada fonte de dados (satélite, clima, operações de fazenda) está vinculada a um recurso de parte e design. Ao estabelecer esse objeto de mapeamento em um nível por sensor, você alimenta todos os casos de uso agronômicos para se beneficiar dos dados do sensor.

Ponto de extremidade da API: PATCH /sensor-mappings/{sensorMappingId}

Etapa 7: consumir eventos do sensor

Use a coleção para chamar a SensorEventsSensorEvents_List API e consumir dados enviados por seus sensores. Você precisa fornecer as seguintes informações:

  • sensorId (especifica para qual sensor você deseja que os dados sejam mostrados)
  • sensorPartnerId (especifica qual parceiro de sensor está enviando esses dados)
  • startDateTime & endDateTime (os filtros de intervalo de tempo garantem que os dados sejam fatiados para a linha do tempo solicitada)

Ponto de extremidade da API: GET /sensor-events

Próximas etapas

  • Teste nossas APIs aqui.