Integrazione dei sensori sia come partner che come cliente in Azure Data Manager per l'agricoltura
Seguire questa procedura per registrarsi come partner del sensore in modo da poter iniziare a eseguire il push dei dati nell'istanza di Data Manager for Agriculture.
Passaggio 1: Abilitare l'integrazione dei sensori
- L'integrazione del sensore deve essere abilitata prima di poter essere avviata. Questo passaggio effettua il provisioning delle risorse interne di Azure necessarie per l'integrazione dei sensori per l'istanza di Data Manager per l'agricoltura. A tale scopo, eseguire il comando armclient seguente.
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'}}}"
Output di esempio:
{
"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"
}
- Il completamento del processo precedente potrebbe richiedere alcuni minuti. Per conoscere lo stato del processo, è necessario eseguire il comando armclient seguente:
armclient get /subscriptions/<subscription-id>/resourceGroups/<resource-group-name> /providers/Microsoft.AgFoodPlatform/farmBeats/<datamanager-instance-name>?api-version=2023-06-01-preview
- Per verificare se è stato completato, esaminare l'attributo evidenziato. Deve essere aggiornato come "Succeeded" da "Creating" (Creazione) nel passaggio precedente. L'attributo che indica che l'integrazione del sensore è abilitata è indicata da provisioningState all'interno dell'oggetto sensorIntegration.
Output di esempio:
{
"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>"
}
Una volta completato lo stato di provisioning per l'integrazione del sensore, è possibile creare oggetti di integrazione del sensore.
Passaggio 2: Creare l'integrazione del partner del sensore
Creare il passaggio di integrazione del partner del sensore deve essere eseguito per connettere il cliente al provider. L'integrationId viene usato successivamente nella creazione del sensore.
Documentazione dell'API: Integrazioni dei partner del sensore - Creare o aggiornare
Passaggio 3: Creare un modello di dati del sensore
Usare il modello di dati del sensore per definire il modello di telemetria inviato. Tutti i dati di telemetria inviati dal sensore vengono convalidati in base a questo modello di dati.
Documentazione dell'API: Modelli di dati dei sensori - Creare o aggiornare
Telemetria di esempio
{
"pressure": 30.45,
"temperature": 28,
"name": "sensor-1"
}
Modello di dati del sensore corrispondente
{
"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
}
}
Passaggio 4: Creare un sensore
Creare un sensore usando l'ID di integrazione e l'ID del modello di dati del sensore corrispondenti. DeviceId e HardwareId sono parametri facoltativi, se necessario, è possibile usare Dispositivi - Crea o Aggiorna per creare il dispositivo.
Documentazione dell'API: Sensori - Creare o aggiornare
Passaggio 5: Ottenere i stringa di connessione IoTHub
Ottenere i stringa di connessione IoTHub per eseguire il push dei dati di telemetria dei sensori nella piattaforma per il sensore creato.
Documentazione dell'API: Sensors - Get Connessione ion String
Passaggio 6: Eseguire il push dei dati usando hub IoT
Usare hub IoT SDK per dispositivi per eseguire il push dei dati di telemetria usando il stringa di connessione.
Per tutti gli eventi di telemetria del sensore, "timestamp" è una proprietà obbligatoria e deve essere in formato ISO 8601 (AAAA-MM-GGTHH:MM:SSZ).
È ora tutto pronto per iniziare a eseguire il push dei dati dei sensori per tutti i sensori usando i rispettivi stringa di connessione forniti per ogni sensore. Tuttavia, i dati del sensore devono essere inviati nel formato definito nel modello di dati del sensore creato nel passaggio 3. Fare riferimento a un esempio dello schema di telemetria seguente:
{
"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
}
Passaggi successivi
- Testare le API qui.