Интеграция датчиков как партнера, так и клиента в Azure Data Manager для сельского хозяйства
Выполните следующие действия, чтобы зарегистрировать в качестве партнера датчика, чтобы начать отправку данных в экземпляр Data Manager для сельского хозяйства.
Шаг 1. Включение интеграции датчиков
- Интеграция датчика должна быть включена, прежде чем ее можно будет инициировать. Этот шаг подготавливает необходимые внутренние ресурсы Azure для интеграции датчиков для экземпляра Data Manager для сельского хозяйства. Это можно сделать, выполнив следующую команду 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'}}}"
Образец вывода:
{
"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"
}
- Выполнение приведенного выше задания может занять несколько минут. Чтобы узнать состояние задания, выполните следующую команду armclient:
armclient get /subscriptions/<subscription-id>/resourceGroups/<resource-group-name> /providers/Microsoft.AgFoodPlatform/farmBeats/<datamanager-instance-name>?api-version=2023-06-01-preview
- Чтобы проверить, завершено ли оно, просмотрите выделенный атрибут. Оно должно быть обновлено как "Успешно" из "Создание" на предыдущем шаге. Атрибут, указывающий, что интеграция датчика включена, указывает подготовкаState внутри объекта sensorIntegration.
Образец вывода:
{
"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>"
}
После завершения подготовки для интеграции датчиков можно создать объекты интеграции датчиков.
Шаг 2. Создание интеграции партнеров датчика
Чтобы подключить клиента к поставщику, необходимо выполнить шаг интеграции с партнером датчика. IntegrationId позже используется при создании датчика.
Документация по API: Интеграция партнеров датчика — создание или обновление
Шаг 3. Создание модели данных датчика
Используйте модель данных датчика для определения модели отправки данных телеметрии. Все данные телеметрии, отправленные датчиком, проверяются согласно этой модели данных.
Документация по API: модели данных датчика — создание или обновление
Пример данных телеметрии
{
"pressure": 30.45,
"temperature": 28,
"name": "sensor-1"
}
Соответствующая модель данных датчика
{
"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
}
}
Шаг 4. Создание датчика
Создайте датчик с помощью соответствующего идентификатора интеграции и идентификатора модели данных датчика. DeviceId и HardwareId являются необязательными параметрами, при необходимости можно использовать устройства — создание или обновление для создания устройства.
Документация по API: датчики — создание или обновление
Шаг 5. Получение строка подключения IoTHub
Получите строка подключения IoTHub для отправки данных телеметрии датчика на платформу, созданную датчиком.
Документация по API: датчики — получение строки Подключение ion
Шаг 6. Отправка данных с помощью Центр Интернета вещей
Используйте пакеты SDK для устройств Центр Интернета вещей для отправки данных телеметрии с помощью строка подключения.
Для всех событий телеметрии датчика метка времени является обязательным свойством и должна быть в формате ISO 8601 (ГГГГ-ММ-ДДTHH:ММ:SSZ).
Теперь все настроены, чтобы начать отправку данных датчика для всех датчиков с помощью соответствующих строка подключения предоставленных для каждого датчика. Однако данные датчика должны быть отправлены в формате, определенном в модели данных датчика, созданной на шаге 3. Ознакомьтесь с примером схемы телеметрии, следующей:
{
"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
}
Следующие шаги
- Проверьте наши API здесь.