تتيح مجموعة Azure IOT Hub Device SDK للتطبيقات المكتوبة بلغة C99 أو إصدار أحدث أو C++ التواصل بسهولة مع Azure IoT Hub وAzure IoT Central وAzure IoT Device Provisioning. يتضمن هذا الريبو الكود المصدري للمكتبات وتعليمات الإعداد وعينات توضح سيناريوهات الاستخدام.
بالنسبة للأجهزة المقيدة ، حيث يتم قياس الذاكرة بالكيلوبايت وليس بالميجابايت، تتوفر خيارات SDK ذات وزن أخف. راجع مجموعات تطوير البرمجيات Azure IoT SDK الأخرى لمعرفة المزيد.
يُنصح جميع مستخدمي Azure IoT SDK بأن يكونوا على دراية بالتغييرات القادمة في شهادة TLS لـ Azure IoT Hub وخدمة توفير الأجهزة والتي ستؤثر على قدرة SDK على الاتصال بهذه الخدمات. في أكتوبر 2022، سيتم ترحيل كلتا الخدمتين من جذر Baltimore CyberTrust CA الحالي إلى جذر DigiCert Global G2 CA. ستكون هناك فترة انتقالية مسبقًا حيث يجب أن تحتوي أجهزة إنترنت الأشياء الخاصة بك على كل من شهادات Baltimore وDigicert العامة والتي قد تكون مشفرة في تطبيقها أو تومض على وحدة WiFi الخاصة بك لمنع مشكلات الاتصال.
ستفقد الأجهزة الحاصلة على شهادة Baltimore العامة فقط القدرة على الاتصال بـ Azure IoT Hub وخدمة توفير الأجهزة في أكتوبر 2022.
للاستعداد لهذا التغيير، تأكد من أن حزمة TLS بجهازك تحتوي على هاتين الشهادتين العامتين لشهادات الثقة.
للحصول على شرح أكثر تعمقًا حول سبب قيام خدمات إنترنت الأشياء بذلك، يرجى الاطلاع على هذه المقالة.
يرجى ملاحظة أنه بالنسبة لسيناريوهات الأجهزة المقيدة مثل mbed وArduino، تتوفر خيارات SDK أفضل وأخف وزنًا. راجع مجموعات تطوير البرمجيات Azure IoT SDK الأخرى لمعرفة المزيد.
إن أبسط طريقة لبدء استخدام Azure IoT SDK على الأنظمة الأساسية المدعومة هي استخدام الحزم والمكتبات التالية:
Arduino: مكتبة SDK للجهاز في Arduino IDE
Windows: جهاز SDK على Vcpkg
iOS: جهاز SDK على CocoaPod
قيود دائرة الرقابة الداخلية
للحصول على تجربة iOS أكثر اكتمالاً بما في ذلك الميزتين المفقودتين أعلاه، يرجى الاطلاع على نموذج مكتبة Swift الأصلية المبنية على Embedded C SDK.
بالنسبة للأنظمة الأساسية الأخرى - بما في ذلك Linux - تحتاج إلى استنساخ SDK وإنشاءه مباشرة. يمكنك أيضًا بنائه مباشرةً للمنصات المذكورة أعلاه.
هناك العديد من العينات المتاحة لـ SDK. يمكن العثور على مزيد من المعلومات هنا.
يمكن العثور على الوثائق المرجعية لواجهة برمجة التطبيقات (API) الخاصة بـ C SDK هنا.
للعثور على Azure IoT SDK بلغات أخرى، يرجى الرجوع إلى الإرشادات هنا.
لمعرفة المزيد حول إنشاء تطبيقات Azure IoT، يمكنك زيارة مركز تطوير Azure IoT.
يدعم IoT Hub بروتوكولات متعددة ليتصل بها الجهاز: MQTT، AMQP، وHTTPS. يمكن تشغيل MQTT وAMQP اختياريًا عبر WebSockets. يسمح Device Client SDK باختيار البروتوكول في وقت إنشاء الاتصال.
يسمح برنامج SDK للجهاز/الوحدة النمطية اختياريًا بإنشاء أجهزة IoT Plug and Play.
إذا لم تكن متأكدًا من البروتوكول الذي ستستخدمه، فيجب عليك استخدام MQTT أو MQTT-WS. يتطلب MQTT موارد أقل بكثير من AMQP ويدعم وظائف IoT Hub أكثر بكثير من HTTPS. لا يُضمن أن يكون لدى AMQP أو HTTPS تطبيقات Device Client SDK للميزات الجديدة من الآن فصاعدًا، مثل Azure IoT Plug and Play.
✔️ الميزة متاحة ✖️ الميزة مخطط لها ولكنها غير مدعومة ➖ لا يوجد دعم مخطط له
سمات | com.mqtt | mqtt-ws | com.amqp | amqp-ws | https | وصف |
---|---|---|---|---|---|---|
المصادقة | ✔️ | ✔️* | ✔️ | ✔️* | ✔️* | قم بتوصيل جهازك بـ IoT Hub بشكل آمن باستخدام المصادقة المدعومة، بما في ذلك المفتاح الخاص وSASToken وX-509 ذاتي التوقيع وتوقيع المرجع المصدق (CA). *يدعم IoT Hub فقط X-509 CA المُوقع عبر AMQP وMQTT في الوقت الحالي. |
إرسال رسالة من الجهاز إلى السحابة | ✔️* | ✔️* | ✔️* | ✔️* | ✔️* | أرسل رسائل من الجهاز إلى السحابة (بحد أقصى 256 كيلو بايت) إلى IoT Hub مع خيار إضافة خصائص مخصصة. يدعم IoT Hub فقط إرسال الدُفعات عبر AMQP وHTTPS فقط في الوقت الحالي. يدعم SDK هذا إرسال الدُفعات عبر HTTP. * جاري إرسال الدفعة عبر AMQP وAMQP-WS، وإضافة خصائص النظام على رسائل D2C. |
تلقي رسائل من السحابة إلى الجهاز | ✔️* | ✔️* | ✔️ | ✔️ | ✔️ | يمكنك تلقي رسائل من السحابة إلى الجهاز وقراءة الخصائص المخصصة وخصائص النظام المرتبطة بها من IoT Hub، مع خيار إكمال/رفض/التخلي عن رسائل C2D. *يدعم IoT Hub خيار إكمال/رفض/التخلي عن رسائل C2D عبر HTTPS وAMQP فقط في الوقت الحالي. |
توأم الجهاز | ✔️* | ✔️* | ✔️* | ✔️* | ➖ | يحتفظ IoT Hub بجهاز توأم لكل جهاز تتصل به بـ IoT Hub. يمكن للجهاز إجراء عمليات مثل الحصول على العلامات المزدوجة والاشتراك في الخصائص المطلوبة. *إرسال إصدار الخصائص المُبلغ عنها وإصدار الخصائص المطلوبة قيد التقدم. |
الطرق المباشرة | ✔️ | ✔️ | ✔️ | ✔️ | ➖ | يمنحك IoT Hub القدرة على استدعاء الأساليب المباشرة على الأجهزة من السحابة. يدعم SDK المعالج للتشغيل المحدد والعامة للأسلوب. |
تحميل الملف إلى Blob | ➖ | ➖ | ➖ | ➖ | ✔️ | يمكن للجهاز بدء تحميل ملف وإعلام IoT Hub عند اكتمال التحميل. يتطلب تحميل الملف اتصال HTTPS، ولكن يمكن البدء من العميل باستخدام أي بروتوكول لعمليات أخرى. |
حالة الاتصال والإبلاغ عن الأخطاء | ✔️* | ✔️* | ✔️* | ✔️* | ✖️ | الإبلاغ عن الأخطاء لرمز الخطأ المدعوم من IoT Hub. *يدعم SDK هذا الإبلاغ عن الأخطاء عند المصادقة وعدم العثور على الجهاز. |
أعد محاولة السياسات | ✔️* | ✔️* | ✔️* | ✔️* | ✖️ | تتضمن سياسة إعادة المحاولة للرسائل غير الناجحة من جهاز إلى السحابة خيارين: عدم المحاولة، والتراجع الأسي مع عدم الاستقرار (افتراضي). *سياسة إعادة المحاولة المخصصة قيد التقدم. |
تعدد إرسال الأجهزة عبر اتصال واحد | ➖ | ➖ | ✔️ | ✔️ | ✔️ | هناك قيود على تعدد الإرسال أكثر مما تم توضيحه في هذا الجدول. انظر هذه الوثيقة لمزيد من المعلومات. |
تجمع الاتصالات - تحديد عدد الاتصالات | ➖ | ➖ | ✖️ | ✖️ | ✖️ | |
دعم التوصيل والتشغيل لـ Azure IoT | ✔️ | ✔️ | ➖ | ➖ | ➖ | القدرة على إنشاء أجهزة Azure IoT Plug and Play. |
يحتوي SDK هذا أيضًا على خيارات يمكنك تعيينها وميزات محددة للنظام الأساسي. يمكنك العثور على قائمة التفاصيل في هذا المستند.
يحتوي هذا المستودع على حزمة SDK للعميل لخدمة توفير الأجهزة.
✔️ الميزة متاحة ✖️ الميزة مخطط لها ولكنها غير مدعومة ➖ لا يوجد دعم مخطط له
سمات | com.mqtt | mqtt-ws | com.amqp | amqp-ws | https | وصف |
---|---|---|---|---|---|---|
TPM التسجيل الفردي | ➖ | ➖ | نعلن عن إيقاف دعم مكتبة utpm-c ودعم مصادقة DPS-TPM ضمن Azure IoT C-SDK. بدءًا من مايو 2023، لن توفر Microsoft الدعم لهذه المكتبة. ستستمر التطبيقات الموجودة التي تستخدم هذه المكتبة في العمل كما هي. نوصي بشدة بالتبديل إلى مصادقة DPS-X509 باستخدام محرك tpm2tss OpenSSL. سيستمر توصيل جهازك بخدمة توفير الجهاز عبر التسجيل الفردي باستخدام وحدة النظام الأساسي الموثوق به في العمل كما هو. تستعرض هذه البداية السريعة كيفية إنشاء جهاز محاكاة للتسجيل الفردي باستخدام TPM. TPM عبر MQTT غير مدعوم حاليًا بواسطة خدمة توفير الأجهزة. | |||
X.509 التسجيل الفردي | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | يدعم SDK هذا توصيل جهازك بخدمة توفير الأجهزة عبر التسجيل الفردي باستخدام شهادة ورقة X.509. تستعرض هذه البداية السريعة كيفية إنشاء جهاز محاكاة للتسجيل الفردي باستخدام X.509. |
مجموعة التسجيل X.509 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | يدعم SDK هذا توصيل جهازك بخدمة توفير الأجهزة عبر مجموعة التسجيل باستخدام شهادة الجذر X.509. |
يمكن استخدام SDK لجهاز IoT Hub لـ C مع مجموعة واسعة من الأنظمة الأساسية والأجهزة التي تعمل بنظام التشغيل.
الحد الأدنى من المتطلبات هو أن يدعم النظام الأساسي للجهاز ما يلي:
يمكن العثور على تفاصيل دعم النظام الأساسي في هذا المستند. يمكنك العثور على قائمة شاملة لمنصات نظام التشغيل التي تم اختبار مجموعات SDK المتنوعة عليها في كتالوج أجهزة Azure Certified for IoT. لاحظ أنه قد لا يزال بإمكانك استخدام حزم SDK على الأنظمة الأساسية لأنظمة التشغيل والأجهزة غير المدرجة في هذه الصفحة: جميع حزم SDK مفتوحة المصدر ومصممة لتكون محمولة. إذا كانت لديك اقتراحات أو تعليقات أو مشكلات تريد الإبلاغ عنها، فارجع إلى قسمي المساهمة والدعم أدناه.
أدوات تطوير البرامج (SDK) والمكتبات الخاصة بلغة C:
ستجد في المستودع تعليمات وأدوات إنشاء لتجميع وتشغيل عميل الجهاز SDK لـ C على أنظمة Linux وWindows وأنظمة التحكم الدقيقة (ارجع إلى الروابط أعلاه للحصول على مزيد من المعلومات حول تجميع عميل الجهاز لـ C).
إذا كنت تفكر في نقل SDK لعميل الجهاز لـ C إلى نظام أساسي جديد، فراجع مستند دليل النقل.
MBED OS
راجع أيضًا المجلدات المهملة أدناه للحصول على ملاحظات أخرى ذات صلة.
إذا واجهت أي أخطاء، أو كانت لديك اقتراحات لميزات جديدة أو إذا كنت ترغب في أن تصبح مساهمًا نشطًا في هذا المشروع، فيرجى اتباع الإرشادات الواردة في إرشادات المساهمة.
/c-utility, /deps, /umqtt, /uamqp
-
هذه هي وحدات git الفرعية التي تحتوي على تعليمات برمجية، مثل المحولات وتطبيقات البروتوكول، والتي تتم مشاركتها مع مشاريع أخرى.
/build, /build_all
بناء وتسجيل الوصول إلى المجلدات ذات الصلة بالبوابة.
/certs
يحتوي على الشهادات اللازمة للتواصل مع Azure IoT Hub.
/doc
يحتوي هذا المجلد على أدلة تطوير التطبيقات وتعليمات إعداد الجهاز.
/iothub_client
يحتوي على مكونات عميل Azure IoT Hub التي توفر إمكانات المراسلة الأولية للمكتبة. راجع وثائق API ونماذجها للحصول على معلومات حول كيفية استخدامها.
/provisioning_client
يحتوي هذا المجلد على مكتبة العميل لعميل توفير الجهاز.
/samples
يحتوي على نماذج توضح سيناريوهات E2E الأكثر تعقيدًا باستخدام SDK.
/testtools
يحتوي على الأدوات التي تستخدم في اختبار المكتبات.
/tools
أدوات متنوعة.
تم إهمال المجلدات التالية.
/iothub_service_client
يحتوي على مكتبات تتيح التفاعلات مع خدمة IoT Hub لإجراء عمليات مثل إرسال الرسائل إلى الأجهزة وإدارة سجل هوية الجهاز.
/provisioning_service_client
يحتوي على مكتبات تعمل على تمكين التفاعلات مع خدمة توفير الأجهزة لتنفيذ عمليات مثل تعيين سياسة حول عمليات التسجيل.
/serializer
يحتوي على مكتبات توفر إمكانات النمذجة وتسلسل JSON أعلى مكتبة الرسائل الأولية.
تقدم C SDK إصدارات للميزات الجديدة وإصلاحات الأخطاء الهامة والدعم طويل المدى (LTS). لن يتم إصدار إصلاحات الأخطاء العامة في إصدار منفصل، ولكنها بدلاً من ذلك مضمنة في إصدار LTS. يتبع الإصدار الإصدار الدلالي أو xyz
أو major.minor.patch
. في أي وقت يتم فيه تحديث الإصدار، سيتم وضع علامة xyz
عليه.
سيتم إصدار الميزات الجديدة وإصلاحات الأخطاء الهامة (بما في ذلك التحديثات الأمنية) في الفرع الرئيسي. سيتم وضع علامة على هذه الإصدارات باستخدام التاريخ المنسق yyyy-mm-dd
. سيؤدي إصدار الميزة إلى رفع الإصدار minor
وإعادة تعيين إصدار patch
إلى 0. سيؤدي إصلاح الأخطاء الحاسمة إلى رفع إصدار patch
فقط.
إصدارات LTS الجديدة فرع من الرئيسي وسيتم وضع علامة LTS_
. سوف يرث إصدار LTS الجديد الإصدار من الفرع الرئيسي في وقت الإصدار. تتم تسمية فروع LTS باسم lts_mm_yyyy
للشهر والسنة التي تم إنشاء الفرع فيها.
سيحدث إصدار LTS محدث عندما يتم نقل إصلاح الأخطاء الهامة (بما في ذلك التحديثات الأمنية) من الفرع الرئيسي. سيتم وضع علامة على هذه الإصدارات المحدثة بنفس الطريقة باستثناء Ref##، على سبيل المثال LTS_
. سيتم أيضًا صدم إصدار patch
. لن يتم نقل أي ميزات جديدة أو إصلاحات عامة للأخطاء إلى تحديث LTS.
يوجد أدناه جدول يوضح تعيين فروع LTS للحزم التي تم إصدارها.
طَرد | فرع جيثب | علامة LTS | تاريخ بدء LTS | تاريخ انتهاء الصيانة |
---|---|---|---|---|
VCpkg: 12-08-2024 | lts_08_2024 | LTS_08_2024 | 2024-08-12 | 12-08-2025 |
VCCPG:2024-03-04 | lts_03_2024 | LTS_03_2024 | 2024-03-04 | 2025-03-04 |
يشير "تاريخ انتهاء الصيانة" إلى دعم نهاية عمر الإصدار ذي الصلة.
فيما يلي مثال افتراضي للإصدار ووضع العلامات لـ C SDK. تتميز الإصدارات minor
باللون.
1.9.0
، ويحمل الإصدار 2020-02-23
.LTS_07_2020
. يرتفع الفرع الرئيسي إلى 1.10.0 ويتم وضع علامة عليه 1.10.0
.2020-08-02
.1.10.1
، ويحمل الإصدار 2020-09-28
. تم نقل إصلاح الأخطاء الحاسمة إلى إصدار lts LTS_07_2020
(وأي فرع LTS آخر موجود) عن طريق إنشاء فرع بالاسم lts_07_2020_ref02
، ويرتفع إصداره إلى 1.9.1 ويحمل علامة 1.9.1
و LTS_07_2020_Ref02
. سيتم وضع علامة على أي وحدات فرعية كانت جزءًا من إصلاح الأخطاء المهمة بـ LTS_07_2020_Ref02
.1.11.0
، ويحمل الإصدار 2020-12-14
.اعتمد هذا المشروع قواعد السلوك الخاصة بشركة Microsoft مفتوحة المصدر. لمزيد من المعلومات، راجع الأسئلة الشائعة حول قواعد السلوك أو اتصل بـ [email protected] لطرح أي أسئلة أو تعليقات إضافية.
تقوم Microsoft بجمع معلومات الأداء والاستخدام التي يمكن استخدامها لتوفير منتجات وخدمات Microsoft وتحسينها وتحسين تجربتك. لمعرفة المزيد، قم بمراجعة بيان الخصوصية.