Интеграция датчиков в качестве партнера и клиента в Azure Data Manager для сельского хозяйства

Выполните следующие действия, чтобы зарегистрироваться в качестве партнера по сенсорам и начать отправку данных в Систему управления данными для сельского хозяйства.

Шаг 1. Включение интеграции датчиков

  1. Интеграция датчика должна быть включена, прежде чем ее можно будет инициировать. Этот шаг подготавливает необходимые внутренние ресурсы Azure для интеграции сенсоров в экземпляр 'Data Manager for Agriculture' для сельского хозяйства. Это можно сделать, выполнив следующую команду 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"
}
  1. Выполнение приведенного выше задания может занять несколько минут. Чтобы узнать состояние задания, выполните следующую команду armclient:
armclient get /subscriptions/<subscription-id>/resourceGroups/<resource-group-name> /providers/Microsoft.AgFoodPlatform/farmBeats/<datamanager-instance-name>?api-version=2023-06-01-preview
  1. Чтобы проверить, завершено ли оно, просмотрите выделенный атрибут. Оно должно быть обновлено на "Успешно" с "Создание" на предыдущем шаге. Атрибут, указывающий на включение интеграции датчика, выражен через provisioningState внутри объекта 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: Датчики — получение строки подключения

Шаг 6. Отправка данных с помощью Центра Интернета вещей

Используйте пакеты SDK для устройств IoT Hub для отправки данных телеметрии с помощью строки подключения.

Для всех событий телеметрии датчика метка времени является обязательным свойством и должна быть в формате 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
} 

Дальнейшие действия