تكامل أداة الاستشعار كشريك وعميل في 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-04-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-04-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 لاحقا في إنشاء أداة الاستشعار.

وثائق واجهة برمجة التطبيقات: عمليات تكامل شركاء الاستشعار - إنشاء أو تحديث

الخطوة 3: إنشاء نموذج بيانات المستشعر

استخدم نموذج بيانات المستشعر لتحديد نموذج بيانات تتبع الاستخدام الذي يتم إرساله. يتم التحقق من صحة جميع بيانات تتبع الاستخدام المرسلة بواسطة المستشعر وفقا لنموذج البيانات هذا.

وثائق واجهة برمجة التطبيقات: نماذج بيانات الاستشعار - إنشاء أو تحديث

القياس عن بعد للعينة

{
	"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 هما معلمتان اختياريتان، إذا لزم الأمر، يمكنك استخدام الأجهزة - إنشاء أو تحديث لإنشاء الجهاز.

وثائق واجهة برمجة التطبيقات: أدوات الاستشعار - إنشاء أو تحديث

الخطوة 5: الحصول على سلسلة الاتصال IoTHub

احصل على سلسلة الاتصال IoTHub لدفع القياس عن بعد لجهاز الاستشعار إلى النظام الأساسي لأداة الاستشعار التي تم إنشاؤها.

وثائق واجهة برمجة التطبيقات: أدوات الاستشعار - الحصول على سلسلة الاتصال

الخطوة 6: دفع البيانات باستخدام IoT Hub

استخدم IoT Hub Device SDKs لدفع بيانات تتبع الاستخدام باستخدام سلسلة الاتصال.

بالنسبة لجميع أحداث بيانات تتبع استخدام أداة الاستشعار، يعد "الطابع الزمني" خاصية إلزامية ويجب أن يكون بتنسيق ISO 8601 (YYYY-MM-DDTHH:MM: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
} 

الخطوات التالية