Integração de sensores como parceiro e cliente no Azure Data Manager for Agriculture
Siga as etapas abaixo para se registrar como um parceiro de sensor para que você possa começar a enviar seus dados para sua instância do Data Manager for Agriculture.
Etapa 1: Ativar a integração do sensor
- A integração do sensor deve ser ativada antes de poder ser iniciada. Esta etapa provisiona recursos internos do Azure para integração de sensores para a instância do Data Manager for Agriculture. Isso pode ser feito executando o comando armclient .
armclient patch /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.AgFoodPlatform/farmBeats/<datamanager-instance-name>?api-version=2023-06-01-preview "{properties:{sensorIntegration:{enabled:'true'}}}"
Saída de exemplo:
{
"id": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.AgFoodPlatform/farmBeats/<datamanager-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://<datamanager-instance-name>.farmbeats.azure.net/",
"provisioningState": "Succeeded",
"sensorIntegration": {
"enabled": "True",
"provisioningState": "**Creating**"
},
"publicNetworkAccess": "Enabled"
},
"location": "eastus",
"name": "myfarmbeats"
}
- O trabalho acima pode levar alguns minutos para ser concluído. Para saber o status do trabalho, o seguinte comando armclient deve ser executado:
armclient get /subscriptions/<subscription-id>/resourceGroups/<resource-group-name> /providers/Microsoft.AgFoodPlatform/farmBeats/<datamanager-instance-name>?api-version=2023-06-01-preview
- Para verificar se está concluído, observe o atributo realçado. Ele deve ser atualizado como "Sucedido" de "Criando" na etapa anterior. O atributo que indica que a integração do sensor está habilitada é indicado por provisioningState dentro do objeto sensorIntegration.
Saída de exemplo:
{
"id": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.AgFoodPlatform/farmBeats/<datamanager-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>"
}
Quando o status de provisionamento para a integração do sensor estiver concluído, os objetos de integração do sensor poderão ser criados.
Etapa 2: Criar integração com parceiros de sensores
Criar etapa de integração de parceiro de sensor deve ser executada para conectar cliente com provedor. O integrationId é usado posteriormente na criação de sensores.
Documentação da API: Integrações de parceiros de sensor - Criar ou atualizar
Etapa 3: Criar modelo de dados do sensor
Use o modelo de dados do sensor para definir o modelo de telemetria que está sendo enviado. Toda a telemetria enviada pelo sensor é validada de acordo com este modelo de dados.
Documentação da API: Modelos de dados do sensor - Criar ou atualizar
Telemetria de amostra
{
"pressure": 30.45,
"temperature": 28,
"name": "sensor-1"
}
Modelo de dados do sensor correspondente
{
"type": "Sensor",
"manufacturer": "Some sensor manufacturer",
"productCode": "soil m",
"measures": {
"pressure": {
"description": "measures soil moisture",
"dataType": "Double",
"type": "sm",
"unit": "Bar",
"properties": {
"abc": "def",
"elevation": 5
}
},
"temperature": {
"description": "measures soil temperature",
"dataType": "Long",
"type": "sm",
"unit": "Celsius",
"properties": {
"abc": "def",
"elevation": 5
}
},
"name": {
"description": "Sensor name",
"dataType": "String",
"type": "sm",
"unit": "none",
"properties": {
"abc": "def",
"elevation": 5
}
}
},
"sensorPartnerId": "sensor-partner-1",
"id": "sdm124",
"status": "new",
"createdDateTime": "2022-01-24T06:12:15Z",
"modifiedDateTime": "2022-01-24T06:12:15Z",
"eTag": "040158a0-0000-0700-0000-61ee433f0000",
"name": "my sdm for soil moisture",
"description": "description goes here",
"properties": {
"key1": "value1",
"key2": 123.45
}
}
Passo 4: Criar sensor
Crie um sensor usando o ID de integração correspondente e o ID do modelo de dados do sensor. DeviceId e HardwareId são parâmetros opcionais, se necessário, você pode usar o Devices - Create Or Update para criar o dispositivo.
Documentação da API: Sensores - Criar ou atualizar
Etapa 5: Obter a cadeia de conexão IoTHub
Obtenha a cadeia de conexão IoTHub para enviar a telemetria do sensor para a plataforma do Sensor criado.
Documentação da API: Sensores - Obter cadeia de conexão
Etapa 6: Enviar dados por push usando o Hub IoT
Use SDKs de dispositivo do Hub IoT para enviar por push a telemetria usando a cadeia de conexão.
Para todos os eventos de telemetria do sensor, "timestamp" é uma propriedade obrigatória e deve estar no formato ISO 8601 (AAAA-MM-DDTHH:MM:SSZ).
Agora você está pronto para começar a enviar dados do sensor para todos os sensores usando a respetiva cadeia de conexão fornecida para cada sensor. No entanto, os dados do sensor devem ser enviados no formato definido no modelo de dados do sensor criado na Etapa 3. Consulte um exemplo do esquema de telemetria a seguir:
{
"timestamp": "2022-02-11T03:15:00Z",
"bar": 30.181,
"bar_absolute": 29.748,
"bar_trend": 0,
"et_day": 0.081,
"humidity": 55,
"rain_15_min": 0,
"rain_60_min": 0,
"rain_24_hr": 0,
"rain_day": 0,
"rain_rate": 0,
"rain_storm": 0,
"solar_rad": 0,
"temp_out": 58.8,
"uv_index": 0,
"wind_dir": 131,
"wind_dir_of_gust_10_min": 134,
"wind_gust_10_min": 0,
"wind_speed": 0,
"wind_speed_2_min": 0,
"wind_speed_10_min": 0
}
Próximos passos
- Teste as nossas APIs aqui.