التفاعل مع أحداث "مركز إنترنت الأشياء" باستخدام "شبكة الأحداث" لتشغيل الإجراءات

تكامل Azure IoT Hub مع Azure Event Grid بحيث يمكنك إرسال إعلامات الأحداث إلى خدمات أخرى، وتشغيل عمليات المتلقين للمعلومات. قم بتكوين تطبيقات العمل للاستماع إلى أحداث IoT Hub؛ بحيث يمكنك التفاعل مع الأحداث الهامة بطريقة آمنة، وقابلة للتطوير، ويمكن الاعتماد عليها. على سبيل المثال، قم بإنشاء تطبيق يقوم بتحديث قاعدة بيانات، وإنشاء تذكرة عمل، وتسليم إشعار عبر البريد الإلكتروني في كل مرة يتم فيها تسجيل جهاز جديد لـ IoT إلى لوحة الوصل الخاصة بـ IoT.

Azure Event Grid هي خدمة توجيه أحداث مُدارة بالكامل تستخدم نموذج اشتراك للنشر. Event Grid لديه دعم مضمن لخدمات Azure مثل Azure Functions وتطبيقات Azure Logic، ويمكن أن تقدم تنبيهات الأحداث إلى الخدمات غير المتعلقة بـ Azure باستخدام خطافات الويب. للحصول على قائمة كاملة بمعالجات الأحداث التي تدعمها شبكة الأحداث، راجع مقدمة إلى شبكة أحداث Azure.

لمشاهدة فيديو يناقش هذا التكامل، راجع تكامل Azure IoT Hub مع Azure Event Grid.

Diagram that shows Azure Event Grid architecture.

التوفر الإقليمي

يتوفر تكامل Event Grid لمراكز إنترنت الأشياء الموجودة في المناطق التي يتم دعم Event Grid فيها. للحصول على أحدث قائمة بالمناطق، راجع المنتجات المتاحة حسب المنطقة.

أنواع الحدث

ينشر IoT Hub أنواع الأحداث التالية:

نوع الحدث ‏‏الوصف
Microsoft.Devices.DeviceCreated يتم النشر عند تسجيل الجهاز في مركز إنترنت الأشياء.
Microsoft.Devices.DeviceDeleted يتم النشر عند حذف جهاز من مركز إنترنت الأشياء.
Microsoft.Devices.DeviceConnected يتم النشر عندما يكون الجهاز متصلاً بمركز إنترنت الأشياء.
Microsoft.Devices.DeviceDisconnected يتم النشر عند فصل جهاز عن مركز إنترنت الأشياء.
Microsoft.Devices.DeviceTelemetry يتم النشر عند إرسال رسالة القياس عن بعد إلى لوحة وصل IoT

استخدم إما مدخل Azure أو Azure CLI لتكوين الأحداث التي سيتم نشرها من كل مركز إنترنت أشياء. البرنامج التعليمي: إرسال إشعارات عبر البريد الإلكتروني بشأن أحداث Azure IoT Hub باستخدام Logic Apps.

Event schema

تحتوي أحداث IoT Hub على جميع المعلومات التي تحتاجها للاستجابة للتغييرات في دورة حياة جهازك. يمكنك تحديد حدث IoT Hub عن طريق التحقق من أن خاصية eventType تبدأ ب Microsoft.Devices. لمزيد من المعلومات حول كيفية استخدام خصائص حدث شبكة الأحداث، راجع مخطط حدث شبكة الأحداث .

مخطط متصل بالجهاز

يوضح المثال التالي مخطط حدث متصل بجهاز:

[{  
  "id": "f6bbf8f4-d365-520d-a878-17bf7238abd8",
  "topic": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
  "subject": "devices/LogicAppTestDevice",
  "eventType": "Microsoft.Devices.DeviceConnected",
  "eventTime": "2018-06-02T19:17:44.4383997Z",
  "data": {
      "deviceConnectionStateEventInfo": {
        "sequenceNumber":
          "000000000000000001D4132452F67CE200000002000000000000000000000001"
      },
    "hubName": "egtesthub1",
    "deviceId": "LogicAppTestDevice",
    "moduleId" : "DeviceModuleID",
  }, 
  "dataVersion": "1",
  "metadataVersion": "1"
}]

مخطط تتبع الجهاز

يجب أن تكون رسائل تتبع الجهاز بتنسيق JSON صالح مع تعيين نوع المحتوى على application / json وتعيين ترميز المحتوى على UTF-8 في خصائص النظام. كل من هاتين الخاصيتين غير حساسة لحالة الأحرف. إذا لم يتم تعيين ترميز المحتوى، فسيكتب IoT Hub الرسائل بتنسيق ترميز أساسي 64.

يمكنك إثراء أحداث بيانات تتبع الاستخدام للجهاز قبل نشرها إلى Event Grid عن طريق تحديد نقطة النهاية ك Event Grid. لمزيد من المعلومات، راجع إغناء الرسائل .

يوضح المثال التالي مخطط حدث التتبع للجهاز:

[{  
  "id": "9af86784-8d40-fe2g-8b2a-bab65e106785",
  "topic": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
  "subject": "devices/LogicAppTestDevice",
  "eventType": "Microsoft.Devices.DeviceTelemetry",
  "eventTime": "2019-01-07T20:58:30.48Z",
  "data": {
      "body": {
          "Weather": {
              "Temperature": 900
            },
            "Location": "USA"
        },
        "properties": {
            "Status": "Active"
        },
        "systemProperties": {
          "iothub-content-type": "application/json",
          "iothub-content-encoding": "utf-8",
          "iothub-connection-device-id": "d1",
          "iothub-connection-auth-method": "{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
          "iothub-connection-auth-generation-id": "123455432199234570",
          "iothub-enqueuedtime": "2019-01-07T20:58:30.48Z",
          "iothub-message-source": "Telemetry"
        }
  },
  "dataVersion": "",
  "metadataVersion": "1"
}]

مخطط تم إنشاؤه من قبل الجهاز

يوضح المثال التالي مخطط حدث تم إنشاؤه من قبل الجهاز:

[{
  "id": "56afc886-767b-d359-d59e-0da7877166b2",
  "topic": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
  "subject": "devices/LogicAppTestDevice",
  "eventType": "Microsoft.Devices.DeviceCreated",
  "eventTime": "2018-01-02T19:17:44.4383997Z",
  "data": {
    "twin": {
      "deviceId": "LogicAppTestDevice",
      "etag": "AAAAAAAAAAE=",
      "deviceEtag":"null",
      "status": "enabled",
      "statusUpdateTime": "0001-01-01T00:00:00",
      "connectionState": "Disconnected",
      "lastActivityTime": "0001-01-01T00:00:00",
      "cloudToDeviceMessageCount": 0,
      "authenticationType": "sas",
      "x509Thumbprint": {
        "primaryThumbprint": null,
        "secondaryThumbprint": null
      },
      "version": 2,
      "properties": {
        "desired": {
          "$metadata": {
            "$lastUpdated": "2018-01-02T19:17:44.4383997Z"
          },
          "$version": 1
        },
        "reported": {
          "$metadata": {
            "$lastUpdated": "2018-01-02T19:17:44.4383997Z"
          },
          "$version": 1
        }
      }
    },
    "hubName": "egtesthub1",
    "deviceId": "LogicAppTestDevice"
  },
  "dataVersion": "1",
  "metadataVersion": "1"
}]

تحذير

البيانات المزدوجة المرتبطة بحدث إنشاء جهاز هي تكوين افتراضي ولا ينبغي الاعتماد عليها لخصائص authenticationType والأجهزة الأخرى الفعلية في جهاز تم إنشاؤه حديثًا. بالنسبة إلى authenticationType وخصائص الأجهزة الأخرى في جهاز تم إنشاؤه حديثًا، استخدم واجهة برمجة التطبيقات الخاصة بمدير السجل المتوفرة في Azure IoT SDKs.

للحصول على وصف تفصيلي لكل خاصية، راجع مخطط حدث Azure Event Grid لـ IoT Hub.

أحداث التصفية

تتيح شبكة الأحداث تصفية أنواع الأحداث والمواضيع ومحتوى البيانات. أثناء إنشاء اشتراك Event Grid، يمكنك اختيار الاشتراك في أحداث إنترنت الأشياء المحددة.

  • نوع الحدث: للحصول على قائمة بأنواع أحداث IoT Hub، راجع أنواع الأحداث .
  • الموضوع: بالنسبة لأحداث IoT Hub، فإن الموضوع هو اسم الجهاز. يأخذ الموضوع التنسيق devices/{deviceId}. يمكنك تصفية الموضوعات بناءً على مطابقات يبدأ بـ (بادئة) و ​​ ينتهي بـ (لاحقة). يستخدم عامل التصفية عامل التشغيل AND، لذلك يتم تسليم الأحداث ذات الموضوع المطابق لكل من البادئة واللاحقة إلى المشترك.
  • محتوى البيانات: يتم ملء محتوى البيانات بواسطة IoT Hub باستخدام تنسيق الرسالة. يمكنك اختيار الأحداث التي يتم تسليمها استنادا إلى محتويات رسالة بيانات تتبع الاستخدام. للحصول على أمثلة، راجع التصفية المتقدمة. للتصفية على نص رسالة القياس عن بُعد، يجب عليك تعيين نوع المحتوى إلى تطبيق / json وترميز المحتوى إلى UTF-8 في الرسالة خصائص النظام . كل من هاتين الخاصيتين غير حساسة لحالة الأحرف.

بالنسبة لأحداث بيانات تتبع الاستخدام للجهاز، سيقوم IoT Hub بإنشاء مسار الرسالة الافتراضي المسمى RouteToEventGrid استنادا إلى الاشتراك. لتصفية الرسائل قبل إرسال بيانات تتبع الاستخدام، قم بتحديث استعلام التوجيه.

القيود الخاصة بأحداث حالة اتصال الجهاز

تتوفر الأحداث المتصلة بالجهاز والأحداث غير المتصلة بالجهاز للأجهزة المتصلة باستخدام بروتوكول MQTT أو AMQP أو استخدام أي من هذه البروتوكولات عبر WebSockets. الطلبات التي يتم إجراؤها باستخدام HTTPS فقط لن تؤدي إلى تشغيل إشعارات حالة اتصال الجهاز.

للحصول على معلومات حول مراقبة حالة الجهاز باستخدام Event Grid، راجع مراقبة حالة اتصال الجهاز.

الفاصل الزمني لحالة اتصال الجهاز

يحاول IoT Hub الإبلاغ عن حدث تغيير حالة اتصال الجهاز، ولكن قد يفوت بعضها. على الأقل، يبلغ IoT Hub عن أحداث تغيير حالة الاتصال التي تحدث بعد 60 ثانية عن بعضها البعض. قد يؤدي هذا السلوك إلى نتائج مثل أحداث توصيل جهاز متعددة تم الإبلاغ عنها مع عدم وجود أحداث قطع اتصال جهاز بينها.

تلميحات حول استهلاك الأحداث

يجب أن تتبع التطبيقات التي تعالج أحداث IoT Hub هذه الممارسات المقترحة:

  • يمكن تكوين عدة اشتراكات لتوجيه الأحداث إلى نفس معالج الأحداث؛ لذا لا تفترض أن الأحداث من مصدر معين. تحقق دائمًا من موضوع الرسالة؛ للتأكد من أنه يأتي من IoT Hub الذي تتوقعه.
  • لا تفترض أن كافة الأحداث التي تتلقاها هي الأنواع التي تتوقعها. تحقق دائماً من eventType قبل معالجة الرسالة.
  • يمكن أن تصل الرسائل خارج النظام أو بعد تأخير. استخدم حقل eag لفهم ما إذا كانت معلوماتك حول الكائنات محدثة للأحداث التي تم إنشاؤها أو التي تم حذفها من الجهاز.

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