إنشاء رسائل IoT Hub وقراءتها
لدعم إمكانية التشغيل التفاعلي عبر البروتوكولات، يحدد IoT Hub مجموعة شائعة من ميزات المراسلة المتوفرة في جميع البروتوكولات التي تواجه الجهاز. يمكن استخدام هذه الميزات في كل من الرسائل من جهاز إلى سحابة والرسائل من السحابة إلى الجهاز.
إشعار
تتوفر بعض الميزات المذكورة في هذه المقالة، مثل المراسلة من السحابة إلى الجهاز والجهاز المزدوج وإدارة الجهاز، في الطبقة القياسية لـ IoT Hub فقط. لمزيد من المعلومات حول مستويات IoT Hub الأساسية والقياسية/المجانية، راجع اختيار طبقة IoT Hub المناسبة للحل الخاص بك.
يقوم IoT Hub بتنفيذ المراسلة من جهاز إلى سحابة باستخدام نمط مراسلة دفق. تشبه رسائل IoT Hub من جهاز إلى سحابة أحداث مراكز الأحداث أكثر من رسائل ناقل خدمة Microsoft Azure من حيث أن هناك عددا كبيرا من الأحداث التي تمر عبر الخدمة التي يمكن للعديد من القراء قراءتها.
تتكون رسالة IoT Hub من:
مجموعة محددة مسبقا من خصائص النظام كما هو موضح لاحقا في هذه المقالة.
مجموعة من خصائص التطبيق. قاموس خصائص السلسلة التي يمكن للتطبيق تعريفها والوصول إليها، دون الحاجة إلى إلغاء تسلسل نص الرسالة. لا يعدل IoT Hub هذه الخصائص أبدًا.
نص الرسالة، والذي يمكن أن يكون أي نوع من البيانات.
ينفذ كل بروتوكول جهاز خصائص الإعداد بطرق مختلفة. لمزيد من المعلومات، راجع دليل بروتوكول MQTT ودليل بروتوكول AMQP دليل المطور للحصول على التفاصيل.
عند إرسال رسائل من جهاز إلى سحابة باستخدام بروتوكول HTTPS أو إرسال رسائل من السحابة إلى الجهاز، يمكن أن تحتوي أسماء الخصائص والقيم على أحرف أبجدية رقمية ASCII فقط، بالإضافة إلى ! # $ % & ' * + - . ^ _ ` | ~
.
تتميز المراسلة من جهاز إلى سحابة باستخدام IoT Hub بالخصائص التالية:
الرسائل من جهاز إلى شبكة سحابية دائمة ويتم الاحتفاظ بها في نقطة النهاية الافتراضية للرسائل/الأحداث لـ IoT Hub لمدة تصل إلى سبعة أيام.
يمكن أن تصل الرسائل من الجهاز إلى السحابة إلى 256 كيلوبايت كحد أقصى، ويمكن تجميعها على دفعات لتحسين عمليات إرسال. يمكن أن تكون الدُفعات 256 كيلوبايت بحد أقصى.
لا يسمح IoT Hub بالتقسيم العشوائي. يتم تقسيم الرسائل من جهاز إلى سحابة استنادًا إلى deviceIdالأصلي.
كما هو موضح في Control access to IoT Hub، يتيح IoT Hub المصادقة لكل جهاز والتحكم في الوصول.
يمكنك وضع طابع على الرسائل بمعلومات تنتقل إلى خصائص التطبيق. لمزيد من المعلومات، راجع إغناء الرسائل .
إشعار
يوفر كل بروتوكول IoT Hub خاصية نوع محتوى الرسالة التي يتم احترامها عند توجيه البيانات إلى نقاط نهاية مخصصة. لمعالجة بياناتك بشكل صحيح في الوجهة (على سبيل المثال، يتم التعامل مع JSON كسلسلة قابلة للتحلل بدلا من البيانات الثنائية المشفرة Base64)، قم بتوفير نوع المحتوى المناسب ومجموعة الأحرف للرسالة.
لاستخدام نص الرسالة في استعلام توجيه IoT Hub، قم بتوفير كائن JSON صالح للرسالة وتعيين خاصية نوع المحتوى للرسالة إلى application/json;charset=utf-8
.
يوضح المثال التالي نص رسالة صالح وقابل للتوجيه:
{
"timestamp": "2022-02-08T20:10:46Z",
"tag_name": "spindle_speed",
"tag_value": 100
}
خصائص النظام للرسائل من جهاز إلى سحابة
الخاصية | الوصف | User Settable? | الكلمة الرئيسية لاستعلام التوجيه |
---|---|---|---|
message-id | معرّف يمكن للمستخدم تعيينه للرسالة المستخدمة لأنماط الرد على الطلب. التنسيق: سلسلة حساسة لحالة الأحرف (يصل طولها إلى 128 حرفا) من أحرف ASCII 7 بت الأبجدية الرقمية بالإضافة إلى - : . + % _ # * ? ! ( ) , = @ ; $ ' . |
نعم | messageId |
iothub-enqueuedtime | تاريخ ووقت تلقي IoT Hub لرسالة Device-to-Cloud. | لا | enqueuedTime |
user-id | معرف يستخدم لتحديد أصل الرسائل. | نعم | userId |
iothub-connection-device-id | معرّف تم تعيينه بواسطة IoT Hub على رسائل من جهاز إلى سحابة. يحتوي على deviceId الجهاز الذي أرسل الرسالة. | لا | connectionDeviceId |
iothub-connection-module-id | معرّف تم تعيينه بواسطة IoT Hub على رسائل من جهاز إلى سحابة. يحتوي على moduleId الجهاز الذي أرسل الرسالة. | لا | connectionModuleId |
iothub-connection-auth-generation-id | معرّف تم تعيينه بواسطة IoT Hub على رسائل من جهاز إلى سحابة. يحتوي على connectionDeviceGenerationId (وفقاً لـ خصائص هوية الجهاز) للجهاز الذي أرسل الرسالة. | لا | connectionDeviceGenerationId |
iothub-connection-auth-method | أسلوب مصادقة تم تعيينه بواسطة IoT Hub على رسائل من جهاز إلى سحابة. تحتوي هذه الخاصية على معلومات حول أسلوب المصادقة المستخدم لمصادقة الجهاز الذي يرسل الرسالة. | لا | connectionAuthMethod |
iothub-app-iothub-creation-time-utc | يسمح للجهاز بإرسال وقت إنشاء الحدث عند إرسال البيانات دفعة واحدة. | نعم | creation-time-utc |
iothub-creation-time-utc | يسمح للجهاز بإرسال وقت إنشاء الحدث عند إرسال رسالة واحدة في كل مرة. | نعم | creation-time-utc |
dt-dataschema | يتم تعيين هذه القيمة بواسطة IoT hub على الرسائل من جهاز إلى سحابة. تحتوي على معرّف طراز الجهاز الذي تم تعيينه في اتصال الجهاز. | لا | $dt-dataschema |
dt-subject | اسم المكوّن الذي يقوم بإرسال رسائل من جهاز إلى سحابة. | نعم | $dt-subject |
خصائص التطبيق للرسائل من جهاز إلى سحابة
الاستخدام الشائع لخصائص التطبيق هو إرسال طابع زمني من الجهاز باستخدام الخاصية iothub-creation-time-utc
لتسجيل وقت إرسال الرسالة بواسطة الجهاز. يجب أن يكون تنسيق هذا الطابع الزمني بالتوقيت العالمي المتفق عليه دون معلومات عن المنطقة الزمنية. على سبيل المثال، 2021-04-21T11:30:16Z
صالح، ولكنه 2021-04-21T11:30:16-07:00
غير صالح.
{
"applicationId":"00001111-aaaa-2222-bbbb-3333cccc4444",
"messageSource":"telemetry",
"deviceId":"sample-device-01",
"schema":"default@v1",
"templateId":"urn:modelDefinition:mkuyqxzgea:e14m1ukpn",
"enqueuedTime":"2021-01-29T16:45:39.143Z",
"telemetry":{
"temperature":8.341033560421833
},
"messageProperties":{
"iothub-creation-time-utc":"2021-01-29T16:45:39.021Z"
},
"enrichments":{}
}
خصائص النظام للرسائل من السحابة إلى الجهاز
الخاصية | الوصف | User Settable? |
---|---|---|
message-id | معرّف يمكن للمستخدم تعيينه للرسالة المستخدمة لأنماط الرد على الطلب. التنسيق: سلسلة حساسة لحالة الأحرف (يصل طولها إلى 128 حرفا) من أحرف ASCII 7 بت الأبجدية الرقمية بالإضافة إلى - : . + % _ # * ? ! ( ) , = @ ; $ ' . |
نعم |
sequence-number | رقم (فريد لكل قائمة انتظار أجهزة) تم تعيينه بواسطة IoT Hub لكل رسالة من سحابة إلى جهاز. | لا |
to | وجهة محددة في رسائل Cloud-to-Device. | لا |
absolute-expiry-time | تاريخ ووقت انتهاء صلاحية الرسالة. | نعم |
correlation-id | خاصية سلسلة في رسالة استجابة تحتوي عادة على MessageId الطلب في أنماط الرد على الطلب. | نعم |
user-id | معرف يستخدم لتحديد أصل الرسائل. عند إنشاء الرسائل بواسطة IoT Hub، يكون معرف المستخدم هو اسم مركز IoT. | نعم |
iothub-ack | مُنشئ رسالة ملاحظات. يتم استخدام هذه الخاصية في رسائل سحابة إلى جهاز لطلب IoT Hub لإنشاء رسائل ملاحظات كنتيجة لاستهلاك الرسالة من قبل الجهاز. القيم المحتملة: none (افتراضية): لم يتم إنشاء رسالة ملاحظات، positive: تلقي رسالة ملاحظات إذا تم إكمال الرسالة، negative: تلقي رسالة ملاحظات إذا انتهت مدة صلاحية الرسالة (أو تم الوصول إلى الحد الأقصى لعدد التسليم) دون إكمالها من قبل الجهاز، أو full: positive وnegative في نفس الوقت. | نعم |
أسماء خصائص النظام
تختلف أسماء خصائص النظام بناءً على نقطة النهاية التي يتم توجيه الرسائل إليها.
اسم خاصية النظام | مراكز الأحداث | تخزين Azure | ناقل الخدمة | Event Grid |
---|---|---|---|---|
معرّف الرسالة | message-id | messageId | MessageId | message-id |
معرف المستخدم | user-id | userId | معرف المستخدم | user-id |
معرف جهاز الاتصال | iothub-connection-device-id | connectionDeviceId | iothub-connection-device-id | iothub-connection-device-id |
معرف وحدة الاتصال | iothub-connection-module-id | connectionModuleId | iothub-connection-module-id | iothub-connection-module-id |
معرّف إنشاء مصادقة الاتصال | iothub-connection-auth-generation-id | connectionDeviceGenerationId | iothub-connection-auth-generation-id | iothub-connection-auth-generation-id |
طريقة مصادقة الاتصال | iothub-connection-auth-method | connectionAuthMethod | iothub-connection-auth-method | iothub-connection-auth-method |
نوع المحتوى | content-type | نوع المحتوى | ContentType | iothub-content-type |
contentEncoding | ترميز المحتوى | contentEncoding | ContentEncoding | iothub-content-encoding |
iothub-enqueuedtime | iothub-enqueuedtime | enqueuedTime | غير متوفر | iothub-enqueuedtime |
CorrelationId | correlation-id | correlationId | CorrelationId | correlation-id |
dt-dataschema | dt-dataschema | dt-dataschema | dt-dataschema | dt-dataschema |
dt-subject | dt-subject | dt-subject | dt-subject | dt-subject |
حجم الرسالة
يقيس IoT Hub حجم الرسالة بطريقة غير محددة البروتوكول، مع الأخذ في الاعتبار البيانات الأساسية الفعلية فقط. يتم حساب الحجم بالبايت كمجموع القيم التالية:
- حجم النص بالبايت.
- الحجم بالبايت لكافة قيم خصائص نظام الرسائل.
- الحجم بالبايت لكافة أسماء خصائص المستخدم وقيمها.
تقتصر أسماء الخصائص وقيمها على أحرف ASCII، بحيث يساوي طول السلاسل الحجم بالبايت.
خصائص مكافحة تزييف الهوية
لتجنب تزييف هوية الجهاز في الرسائل من الجهاز إلى السحابة، يضع IoT Hub طابع على كافة الرسائل بالخصائص التالية:
- iothub-connection-device-id
- iothub-connection-auth-generation-id
- iothub-connection-auth-method
يحتوي النوعان الأولان على deviceId وgenerationId للجهاز الأصلي، وفقاً لخصائص هوية الجهاز.
تحتوي الخاصية iothub-connection-auth-method على كائن متسلسل في JSON، مع الخصائص التالية:
{
"scope": "{ hub | device | module }",
"type": "{ symkey | sas | x509 }",
"issuer": "iothub"
}
الخطوات التالية
- للحصول على معلومات بشأن حدود حجم الرسالة في IoT Hub، راجع حصص IoT Hub والتقييد.
- لمعرفة كيفية إنشاء وقراءة رسائل IoT Hub بلغات برمجة مختلفة، راجع التشغيل السريعs.
- للتعرف على بنية الأحداث غير المتعلقة بالتتبع التي تم إنشاؤها بواسطة مركز IoT، راجع مخططات أحداث مركز IoT غير بيانات تتبع الاستخدام.