البرنامج التعليمي: توصيل IoT Plug and Play بتطبيقات أجهزة متعددة المكونات تعمل على Linux أو Windows إلى مركز IoT
يوضح لك هذا البرنامج التعليمي كيفية إنشاء نموذج لتطبيق جهاز IoT Plug and Play مع المكونات، وتوصيله بمركز IoT الخاص بك، واستخدام أداة مستكشف Azure IoT لعرض المعلومات التي يرسلها إلى المركز. يتواجد التطبيق النموذجي مكتوبًا في C ويتم تضمينه في SDK جهاز IoT Azure لـ C. يمكن لمنشئ الحلول استخدام أداة مستكشف Azure IoT لفهم قدرات جهاز IoT Plug and Play دون الحاجة إلى عرض أي رمز للجهاز.
في هذا البرنامج التعليمي، سوف تتعلّم:
- تحميل نموذج التعليمات البرمجية.
- إنشاء نموذج التعليمات البرمجية.
- تشغيل نموذج تطبيق الجهاز والتحقق من اتصاله بـIoT hub الخاصة بك.
- مراجعة التعليمة البرمجية للمصدر.
المتطلبات الأساسية
قبل المتابعة، تأكد من إعداد بيئتك، بما في ذلك مركز IoT.
يمكنك إكمال هذا البرنامج التعليمي على Linux أو Windows. أوامر shell في هذا البرنامج التعليمي تتبع اصطلاح Linux لفواصل المسار ''،/
إذا كنت تتابع على Windows فتأكد من تبديل هذه الفواصل بـ '\
'.
تختلف المتطلبات الأساسية تبعًا لنظام التشغيل:
Linux
يفترض هذا البرنامج التعليمي أنك تستخدم Ubuntu Linux. تم اختبار الخطوات في هذا البرنامج التعليمي باستخدام Ubuntu 18.04.
لإكمال هذا البرنامج التعليمي على Linux، قم بتثبيت البرنامج التالي على بيئة Linux المحلية لديك:
تثبيت GCC، Git، cmake، وكافة التبعيات المطلوبة باستخدام الأمر apt-get
:
sudo apt-get update
sudo apt-get install -y git cmake build-essential curl libcurl4-openssl-dev libssl-dev uuid-dev
تحقق من إصدار cmake
هو فوق 2.8.12 وإصدار GCC سحابة القطاع الحكومي فوق 4.4.7.
cmake --version
gcc --version
Windows
لإكمال هذا البرنامج التعليمي على Windows، قم بتثبيت البرنامج التالي على بيئة Windows المحلية لديك:
- Visual Studio (مجتمع، محترف، أو مشروع) - تأكد من تضمين تطوير سطح المكتب مع عبء عمل C ++ عند تثبيت Visual Studio.
- Git.
- CMake.
قم بتنزيل الرمز
إذا أكملت البرنامج التعليمي: قم بتوصيل نموذج تطبيق جهاز IoT Plug and Play الذي يعمل على Linux أو Windows إلى IoT Hub (C) الذي قمت بتنزيله بالفعل.
في هذا البرنامج التعليمي، يمكنك إعداد بيئة تطوير يمكنك استخدامها لاستنساخ وبناء Azure IoT Hub Device C SDK.
افتح موجه أوامر في مجلد من اختيارك. نفذ الأمر التالي لاستنساخ مستودع GitHubAzure IoT C SDKs and Libraries في هذا الموقع:
git clone https://github.com/Azure/azure-iot-sdk-c.git
cd azure-iot-sdk-c
git submodule update --init
توقع أن تستغرق هذه العملية دقائق عدة لإكمالها.
إنشاء التعليمات البرمجية وتشغيلها
يمكنك إنشاء التعليمات البرمجية وتشغيلها باستخدام Visual Studio أو cmake
في سطر الأوامر.
استخدام Visual Studio
افتح المجلد الجذر من المستودع المستنسخ. بعد بضع ثوان، دعم CMake في Visual Studio بإنشاء كل ما تحتاجه لتشغيل وتصحيح المشروع.
عندما يكون Visual Studio جاهزًا، في Solution Explorer، انتقل إلى نموذج iothub_client/samples/pnp/pnp_temperature_controller/.
انقر بزر الماوس الأيمن فوق الملف pnp_temperature_controller.c وحدد Add Debug Configuration. حدد Default.
Visual Studio يفتح ملف launch.vs.js. تحرير هذا الملف كما هو موضح في القصاصة البرمجية التالية لتعيين متغيرات البيئة المطلوبة. قمت بعمل ملاحظة من معرف النطاق والمفتاح الأساسي للتسجيل عند الانتهاء من إعداد البيئة الخاصة بك لوحدات تشغيل سريع وبرامج تعليمية لدى IoT Plug and Play:
{ "version": "0.2.1", "defaults": {}, "configurations": [ { "type": "default", "project": "iothub_client\\samples\\pnp\\pnp_temperature_controller\\pnp_temperature_controller.c", "projectTarget": "", "name": "pnp_temperature_controller.c", "env": { "IOTHUB_DEVICE_SECURITY_TYPE": "DPS", "IOTHUB_DEVICE_DPS_ID_SCOPE": "<Your ID scope>", "IOTHUB_DEVICE_DPS_DEVICE_ID": "my-pnp-device", "IOTHUB_DEVICE_DPS_DEVICE_KEY": "<Your enrollment primary key>" } } ] }
انقر بزر الماوس الأيمن فوق الملف pnp_temperature_controller.c وحدد Set as Startup Item.
لتتبع تنفيذ التعليمات البرمجية في Visual Studio، إضافة نقطة توقف إلى
main
الدالة في ملف pnp_temperature_controller.c.يمكنك الآن تشغيل وتصحيح العينة من القائمة Debug.
الجهاز جاهز الآن لتلقي الأوامر وتحديثات الخصائص، وقد بدأ بإرسال بيانات القياس عن بعد إلى المركز. الاحتفاظ بالعينة قيد التشغيل أثناء إكمال الخطوات التالية.
استخدام cmake
في سطر الأوامر
لإنشاء العينة:
إنشاء مجلد فرعي cmake في المجلد الجذر من SDK الجهاز المستنسخة ثم انتقل إلى هذا المجلد:
cd azure-iot-sdk-c mkdir cmake cd cmake
تشغيل الأوامر التالية لإنشاء وبناء ملفات المشروع لـ SDK ونماذج:
cmake .. cmake --build .
في إعداد بيئتك، قمت بإنشاء أربعة متغيرات بيئة لتكوين العينة لاستخدام خدمة توفير الأجهزة (DPS) للاتصال بمركز إنترنت الأشياء الخاص بك:
-
IOTHUB_DEVICE_SECURITY_TYPEمع القيمة
DPS
. - IOTHUB_DEVICE_DPS_ID_SCOPE مع نطاق معرف DPS.
-
IOTHUB_DEVICE_DPS_DEVICE_IDمع القيمة
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEYمع مفتاح التسجيل الأساسي.
-
IOTHUB_DEVICE_DPS_ENDPOINTمع القيمة
global.azure-devices-provisioning.net
لمعرفة المزيد حول تكوين العينة، راجع نموذج readme.
لتشغيل النموذج:
من مجلد cmake انتقل إلى المجلد الذي يحتوي على الملف القابل للتنفيذ وشغله:
# Bash cd iothub_client/samples/pnp/pnp_temperature_controller ./pnp_temperature_controller
REM Windows cd iothub_client\samples\pnp\pnp_temperature_controller\Debug pnp_temperature_controller.exe
الجهاز جاهز الآن لتلقي الأوامر وتحديثات الخصائص، وقد بدأ بإرسال بيانات القياس عن بعد إلى المركز. الاحتفاظ بالعينة قيد التشغيل أثناء إكمال الخطوات التالية.
استخدام مستكشف Azure IoT للتحقق من صحة التعليمات البرمجية
بعد بدء نموذج عميل الجهاز، استخدم أداة مستكشف Azure IoT للتحقق من عملها.
افتح مستكشف Azure IoT.
في صفحة IoT hubs ، إذا لم تكن قد أضفت بالفعل اتصالا إلى مركز IoT، فحدد + Add connection. أدخل سلسلة الاتصال لمركز IoT الذي أنشأته مسبقا وحدد حفظ.
في صفحة IoT أجهزة التوصيل و التشغيل Settings، حدد + Add > Local folder وحدد مجلد النماذج المحلية حيث حفظت ملفات النموذج.
في صفحة IoT hubs ، انقر فوق اسم المركز الذي تريد العمل معه. يمكنك مشاهدة قائمة الأجهزة المسجلة في مركز IoT.
انقر فوق معرف الجهاز الخاص بالجهاز الذي قمت بإنشائه مسبقا.
توضح القائمة الموجودة على اليسار أنواع المعلومات المختلفة المتاحة للجهاز.
حدد مكونات أجهزة التوصيل و التشغيل IoT لعرض معلومات النموذج لجهازك.
يمكنك عرض المكونات المختلفة للجهاز. المكون الافتراضي وأي مكون إضافي. حدد مكونًا للعمل معه.
حدد صفحة بيانات تتبع الاستخدام ثم حدد البدء لعرض بيانات تتبع الاستخدام التي يرسلها الجهاز لهذا المكون.
حدد صفحة الخصائص (للقراءة فقط) لعرض خصائص القراءة فقط التي تم الإبلاغ عنها لهذا المكون.
حدد صفحة Properties (قابل للكتابة) لعرض الخصائص القابلة للكتابة التي يمكنك تحديثها لهذا المكون.
حدد خاصية باسمها، وأدخل قيمة جديدة لها، وحدد تحديث القيمة المطلوبة.
لمشاهدة القيمة الجديدة تظهر، حدد الزر تحديث .
حدد صفحة الأوامر لعرض جميع الأوامر لهذا المكون.
حدد الأمر الذي تريد اختباره لتعيين المعلمة إن وجدت. حدد إرسال الأمر لاستدعاء الأمر على الجهاز. يمكنك مشاهدة الجهاز يستجيب للأمر في نافذة موجه الأوامر حيث يتم تشغيل نموذج التعليمات البرمجية.
مراجعة الرمز
يستخدم هذا النموذج جهاز تحكم بدرجة حرارة IoT Plug and Play. هذا النموذج ينفذ نموذجًا باستخدام مكونات متعددة. يحدد ملف نموذج لغة تعريف التوائم الرقمية (DTDL) لجهاز درجة الحرارة بيانات تتبع الاستخدام والخصائص والأوامر التي ينفذها الجهاز.
وظائف مساعد IoT Plug and Play
للحصول على هذا النموذج، تستخدم التعليمات البرمجية بعض دالات المساعد من مجلد /common:
pnp_device_client_ll يحتوي على أسلوب الاتصال بـ IoT Plug and Play باستخدام model-id
مضمن كمعلمة: PnP_CreateDeviceClientLLHandle
.
pnp_protocol: يحتوي على وظائف مساعد IoT Plug and Play:
PnP_CreateReportedProperty
PnP_CreateReportedPropertyWithStatus
PnP_ParseCommandName
PnP_CreateTelemetryMessageHandle
PnP_ProcessTwinData
PnP_CopyPayloadToString
PnP_CreateDeviceClientLLHandle_ViaDps
هذه دالات المساعد عامة بما يكفي لاستخدامها في المشروع الخاص بك. يستخدمها هذا النموذج في الملفات الثلاثة التي تتوافق مع كل مكون في النموذج:
- pnp_deviceinfo_component
- pnp_temperature_controller
- pnp_thermostat_component
على سبيل المثال، في الملف pnp_deviceinfo_component،تستخدم الوظيفة SendReportedPropertyForDeviceInformation
اثنين من وظائف المساعد:
if ((jsonToSend = PnP_CreateReportedProperty(componentName, propertyName, propertyValue)) == NULL)
{
LogError("Unable to build reported property response for propertyName=%s, propertyValue=%s", propertyName, propertyValue);
}
else
{
const char* jsonToSendStr = STRING_c_str(jsonToSend);
size_t jsonToSendStrLen = strlen(jsonToSendStr);
if ((iothubClientResult = IoTHubDeviceClient_LL_SendReportedState(deviceClientLL, (const unsigned char*)jsonToSendStr, jsonToSendStrLen, NULL, NULL)) != IOTHUB_CLIENT_OK)
{
LogError("Unable to send reported state for property=%s, error=%d", propertyName, iothubClientResult);
}
else
{
LogInfo("Sending device information property to IoTHub. propertyName=%s, propertyValue=%s", propertyName, propertyValue);
}
}
يتبع كل مكون في العينة هذا النمط.
تدفق التعليمات البرمجية
الوظيفة main
تهيئ الاتصال وترسل معرف النموذج:
deviceClient = CreateDeviceClientAndAllocateComponents();
تستخدم التعليمات البرمجية PnP_CreateDeviceClientLLHandle
للاتصال بمركز IoT وتعيين modelId
كخيار وإعداد أسلوب الجهاز ومعالجات استدعاء توأم الجهاز لأساليب مباشرة وتحديثات الجهاز التوأم:
g_pnpDeviceConfiguration.deviceMethodCallback = PnP_TempControlComponent_DeviceMethodCallback;
g_pnpDeviceConfiguration.deviceTwinCallback = PnP_TempControlComponent_DeviceTwinCallback;
g_pnpDeviceConfiguration.modelId = g_temperatureControllerModelId;
...
deviceClient = PnP_CreateDeviceClientLLHandle(&g_pnpDeviceConfiguration);
&g_pnpDeviceConfiguration
يحتوي أيضًا على معلومات الاتصال. متغير البيئة IOTHUB_DEVICE_SECURITY_TYPE يحدد إذا كانت العينة تستخدم سلسلة اتصال أو خدمة توفير الجهاز للاتصال بمركز IoT.
عندما يرسل الجهاز معرف نموذج، يصبح جهاز IoT Plug and Play.
باستخدام معالجات الاستدعاء في مكان الجهاز يتفاعل مع التحديثات التوأم واستدعاءات الأسلوب المباشر:
بالنسبة لاستدعاء جهاز توأم،
PnP_TempControlComponent_DeviceTwinCallback
يستدعي الوظيفةPnP_ProcessTwinData
لمعالجة البيانات.PnP_ProcessTwinData
يستخدم نمط الزائر تحليل JSON ثم يقوم بزيارة كل خاصية، من أجل استدعاءPnP_TempControlComponent_ApplicationPropertyCallback
إلى كل عنصر.بالنسبة لاستدعاء الأوامر، الوظيفة
PnP_TempControlComponent_DeviceMethodCallback
تستخدم وظيفة المساعد لتحليل الأمر وأسماء المكونات:PnP_ParseCommandName(methodName, &componentName, &componentNameSize, &pnpCommandName);
الوظيفة
PnP_TempControlComponent_DeviceMethodCallback
تستدعي الأمر على المكون:LogInfo("Received PnP command for component=%.*s, command=%s", (int)componentNameSize, componentName, pnpCommandName); if (strncmp((const char*)componentName, g_thermostatComponent1Name, g_thermostatComponent1Size) == 0) { result = PnP_ThermostatComponent_ProcessCommand(g_thermostatHandle1, pnpCommandName, rootValue, response, responseSize); } else if (strncmp((const char*)componentName, g_thermostatComponent2Name, g_thermostatComponent2Size) == 0) { result = PnP_ThermostatComponent_ProcessCommand(g_thermostatHandle2, pnpCommandName, rootValue, response, responseSize); } else { LogError("PnP component=%.*s is not supported by TemperatureController", (int)componentNameSize, componentName); result = PNP_STATUS_NOT_FOUND; }
الوظيفة main
تهيئ خصائص للقراءة فقط يتم إرسالها إلى مركز IoT:
PnP_TempControlComponent_ReportSerialNumber_Property(deviceClient);
PnP_DeviceInfoComponent_Report_All_Properties(g_deviceInfoComponentName, deviceClient);
PnP_TempControlComponent_Report_MaxTempSinceLastReboot_Property(g_thermostatHandle1, deviceClient);
PnP_TempControlComponent_Report_MaxTempSinceLastReboot_Property(g_thermostatHandle2, deviceClient);
الوظيفة main
تدخل حلقة لتحديث بيانات الحدث والقياس عن بعد لكل مكون:
while (true)
{
PnP_TempControlComponent_SendWorkingSet(deviceClient);
PnP_ThermostatComponent_SendTelemetry(g_thermostatHandle1, deviceClient);
PnP_ThermostatComponent_SendTelemetry(g_thermostatHandle2, deviceClient);
}
الوظيفة PnP_ThermostatComponent_SendTelemetry
توضح لك كيفية استخدام البنية PNP_THERMOSTAT_COMPONENT
. تستخدم العينة هذه البنية لتخزين معلومات حول منظمتي الحرارة في وحدة التحكم في درجة الحرارة. تستخدم التعليمات البرمجية الوظيفة PnP_CreateTelemetryMessageHandle
لإعداد الرسالة وإرسالها:
messageHandle = PnP_CreateTelemetryMessageHandle(pnpThermostatComponent->componentName, temperatureStringBuffer);
...
iothubResult = IoTHubDeviceClient_LL_SendEventAsync(deviceClientLL, messageHandle, NULL, NULL);
الوظيفة main
أخيرًا تدمر المكونات المختلفة وتغلق الاتصال بالمركز.
يوضح لك هذا البرنامج التعليمي كيفية إنشاء نموذج لتطبيق جهاز IoT Plug and Play مع المكونات، وتوصيله بمركز IoT الخاص بك، واستخدام أداة مستكشف Azure IoT لعرض المعلومات التي يرسلها إلى المركز. يوجد نموذج التطبيق مكتوب في C# ويتم تضمينه في حزمة SDK لجهاز إنترنت الأشياء الخاص بـ Azure فيما يخص C#. يمكن لمنشئ الحلول استخدام أداة مستكشف إنترنت الأشياء الخاص بـAzure لفهم قدرات جهاز IoT Plug وPlay دون الحاجة إلى عرض أي رمز للجهاز.
في هذا البرنامج التعليمي، سوف تتعلّم:
- تحميل نموذج التعليمات البرمجية.
- إنشاء نموذج التعليمات البرمجية.
- تشغيل نموذج تطبيق الجهاز والتحقق من اتصاله بـIoT hub الخاصة بك.
- مراجعة التعليمة البرمجية للمصدر.
المتطلبات الأساسية
قبل المتابعة، تأكد من إعداد بيئتك، بما في ذلك مركز IoT.
يمكنك إكمال هذا البرنامج التعليمي على Linux أو Windows. أوامر shell في هذا البرنامج التعليمي تتبع اصطلاح Linux لفواصل المسار ''،/
إذا كنت تتابع على Windows فتأكد من تبديل هذه الفواصل بـ '\
'.
استنساخ مستودع SDK باستخدام نموذج التعليمات البرمجية
إذا أكملت البرنامج التعليمي: قم بتوصيل نموذج من تطبيق جهاز IoT Plug and Play الذي يعمل على Windows إلى IoT Hub (C #)، فقد قمت بالفعل باستنساخ المستودع.
استنساخ العينات من عينات Azure IoT لمستودع C # GitHub. افتح موجه أوامر في مجلد من اختيارك. قم بتشغيل الأمر التالي لنسخ Microsoft Azure IoT SDK لمستودع .NET GitHub:
git clone https://github.com/Azure/azure-iot-sdk-csharp.git
بناء التعليمة البرمجية
يمكنك الآن إنشاء العينة وتشغيلها. قم بتشغيل الأوامر التالية لإنشاء العينة:
cd azure-iot-sdk-csharp/iothub/device/samples/solutions/PnpDeviceSamples/TemperatureController
dotnet build
تشغيل نموذج الجهاز
لتشغيل النموذج، قم بتشغيل الأمر التالي:
dotnet run
الجهاز جاهز الآن لتلقي الأوامر وتحديثات الخصائص، وقد بدأ بإرسال بيانات القياس عن بعد إلى المركز. الاحتفاظ بالعينة قيد التشغيل أثناء إكمال الخطوات التالية.
استخدام مستكشف إنترنت الأشياء الخاص بـAzure للتحقق من صحة التعليمات البرمجية
بعد بدء نموذج عميل الجهاز، استخدم أداة مستكشف Azure IoT للتحقق من عملها.
افتح مستكشف Azure IoT.
في صفحة IoT hubs ، إذا لم تكن قد أضفت بالفعل اتصالا إلى مركز IoT، فحدد + Add connection. أدخل سلسلة الاتصال لمركز IoT الذي أنشأته مسبقا وحدد حفظ.
في صفحة IoT أجهزة التوصيل و التشغيل Settings، حدد + Add > Local folder وحدد مجلد النماذج المحلية حيث حفظت ملفات النموذج.
في صفحة IoT hubs ، انقر فوق اسم المركز الذي تريد العمل معه. يمكنك مشاهدة قائمة الأجهزة المسجلة في مركز IoT.
انقر فوق معرف الجهاز الخاص بالجهاز الذي قمت بإنشائه مسبقا.
توضح القائمة الموجودة على اليسار أنواع المعلومات المختلفة المتاحة للجهاز.
حدد مكونات أجهزة التوصيل و التشغيل IoT لعرض معلومات النموذج لجهازك.
يمكنك عرض المكونات المختلفة للجهاز. المكون الافتراضي وأي مكون إضافي. حدد مكونًا للعمل معه.
حدد صفحة بيانات تتبع الاستخدام ثم حدد البدء لعرض بيانات تتبع الاستخدام التي يرسلها الجهاز لهذا المكون.
حدد صفحة الخصائص (للقراءة فقط) لعرض خصائص القراءة فقط التي تم الإبلاغ عنها لهذا المكون.
حدد صفحة Properties (قابل للكتابة) لعرض الخصائص القابلة للكتابة التي يمكنك تحديثها لهذا المكون.
حدد خاصية باسمها، وأدخل قيمة جديدة لها، وحدد تحديث القيمة المطلوبة.
لمشاهدة القيمة الجديدة تظهر، حدد الزر تحديث .
حدد صفحة الأوامر لعرض جميع الأوامر لهذا المكون.
حدد الأمر الذي تريد اختباره لتعيين المعلمة إن وجدت. حدد إرسال الأمر لاستدعاء الأمر على الجهاز. يمكنك مشاهدة الجهاز يستجيب للأمر في نافذة موجه الأوامر حيث يتم تشغيل نموذج التعليمات البرمجية.
مراجعة الرمز
يستخدم هذا النموذج جهاز تحكم بدرجة حرارة IoT Plug and Play. يستخدم النموذج المُنفذ لهذه العينة مكونات متعددة. يحدد ملف نموذج لغة تعريف التوائم الرقمية (DTDL) لجهاز درجة الحرارة بيانات تتبع الاستخدام والخصائص والأوامر التي ينفذها الجهاز.
يتصل رمز الجهاز بمركز إنترنت الأشياء باستخدام CreateFromConnectionString
الأسلوب القياسي. يرسل الجهاز معرف الطراز الخاص بنموذج DTDL الذي ينفذه في طلب الاتصال. عندما يرسل الجهاز معرف نموذج، يصبح جهاز IoT Plug and Play:
private static DeviceClient InitializeDeviceClient(string hostname, IAuthenticationMethod authenticationMethod)
{
var options = new ClientOptions
{
ModelId = ModelId,
};
var deviceClient = DeviceClient.Create(hostname, authenticationMethod, TransportType.Mqtt, options);
deviceClient.SetConnectionStatusChangesHandler((status, reason) =>
{
s_logger.LogDebug($"Connection status change registered - status={status}, reason={reason}.");
});
return deviceClient;
}
يُخزن معرف النموذج في التعليمات البرمجية كما هو موضح في القصاصة البرمجية التالية:
private const string ModelId = "dtmi:com:example:TemperatureController;1";
بعد اتصال الجهاز بمركز إنترنت الأشياء، تسجل التعليمات البرمجية معالجات الأوامر.
reboot
يتم تعريف الأمر في المكون الافتراضي.
getMaxMinReport
يتم تعريف الأمر في كل من مكوني منظمات الحرارة:
await _deviceClient.SetMethodHandlerAsync("reboot", HandleRebootCommandAsync, _deviceClient, cancellationToken);
await _deviceClient.SetMethodHandlerAsync("thermostat1*getMaxMinReport", HandleMaxMinReportCommandAsync, Thermostat1, cancellationToken);
await _deviceClient.SetMethodHandlerAsync("thermostat2*getMaxMinReport", HandleMaxMinReportCommandAsync, Thermostat2, cancellationToken);
يوجد معالجات منفصلة لتحديثات الخاصية المطلوبة على مكوني منظم الحرارة:
_desiredPropertyUpdateCallbacks.Add(Thermostat1, TargetTemperatureUpdateCallbackAsync);
_desiredPropertyUpdateCallbacks.Add(Thermostat2, TargetTemperatureUpdateCallbackAsync);
يرسل نموذج التعليمات البرمجية القصاصة البرمجية من كل مكون لمنظم الحرارة:
await SendTemperatureAsync(Thermostat1, cancellationToken);
await SendTemperatureAsync(Thermostat2, cancellationToken);
SendTemperatureTelemetryAsync
يستخدم الأسلوب PnpHelper
الفئة لإنشاء رسائل لكل مكون:
using Message msg = PnpHelper.CreateIothubMessageUtf8(telemetryName, JsonConvert.SerializeObject(currentTemperature), componentName);
PnpHelper
تحتوي الفئة على نماذج أساليب أخرى يمكنك استخدامها مع نموذج مكون متعدد.
استخدم أداة مستكشف إنترنت الأشياء الخاص بـ Azure لعرض القصاصة البرمجية والخصائص من اثنين من مكوني منظم الحرارة:
يمكنك أيضًا استخدام أداة مستكشف إنترنت الأشياء الخاص بـ Azure لاستدعاء الأوامر في أي من مكوني الحرارة، أو في المكون الافتراضي.
يوضح لك هذا البرنامج التعليمي كيفية إنشاء نموذج لتطبيق جهاز IoT Plug and Play مع المكونات، وتوصيله بمركز IoT الخاص بك، واستخدام أداة مستكشف Azure IoT لعرض المعلومات التي يرسلها إلى المركز. نموذج التطبيق مكتوب بلغة برمجة Java ويتم تضمينه في حزمة SDK لجهاز Azure IoT للغة برمجة Java. يمكن لمنشئ الحلول استخدام أداة مستكشف إنترنت الأشياء الخاص بـAzure لفهم قدرات جهاز IoT Plug وPlay دون الحاجة إلى عرض أي رمز للجهاز.
في هذا البرنامج التعليمي، سوف تتعلّم:
- تحميل نموذج التعليمات البرمجية.
- إنشاء نموذج التعليمات البرمجية.
- تشغيل نموذج تطبيق الجهاز والتحقق من اتصاله بـIoT hub الخاصة بك.
- مراجعة التعليمة البرمجية للمصدر.
المتطلبات الأساسية
قبل المتابعة، تأكد من إعداد بيئتك، بما في ذلك مركز IoT.
يمكنك إكمال هذا البرنامج التعليمي على Linux أو Windows. أوامر shell في هذا البرنامج التعليمي تتبع اصطلاح Linux لفواصل المسار ''،/
إذا كنت تتابع على Windows فتأكد من تبديل هذه الفواصل بـ '\
'.
لإكمال هذا البرنامج التعليمي، قم بتثبيت البرنامج التالي في بيئة التطوير المحلية الخاصة بك:
قم بتنزيل الرمز
إذا أكملت البرنامج التعليمي: قم بتوصيل نموذج تطبيق جهاز IoT أجهزة التوصيل و التشغيل ب IoT Hub (Java)، فقد قمت بالفعل باستنساخ المستودع.
افتح موجه الأوامر في الدليل الذي تختاره. نفذ الأمر التالي لنسخ مستودع GitHubAzure IoT Java SDKs and Libraries في هذا الموقع:
git clone https://github.com/Azure/azure-iot-sdk-java.git
توقع أن تستغرق هذه العملية دقائق عدة لإكمالها.
بناء التعليمة البرمجية
انتقل إلى المجلد الجذر لعينة وحدة التحكم في درجة الحرارة في مستودع Java SDK المستنسخ وقم ببنائه:
cd azure-iot-sdk-java/device/iot-device-samples/pnp-device-sample/temperature-controller-device-sample
mvn clean package
تشغيل نموذج الجهاز
في إعداد بيئتك، قمت بإنشاء أربعة متغيرات بيئة لتكوين العينة لاستخدام خدمة توفير الأجهزة (DPS) للاتصال بمركز إنترنت الأشياء الخاص بك:
-
IOTHUB_DEVICE_SECURITY_TYPEمع القيمة
DPS
. - IOTHUB_DEVICE_DPS_ID_SCOPE مع نطاق معرف DPS.
-
IOTHUB_DEVICE_DPS_DEVICE_IDمع القيمة
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEYمع مفتاح التسجيل الأساسي.
-
IOTHUB_DEVICE_DPS_ENDPOINTمع القيمة
global.azure-devices-provisioning.net
لتشغيل نموذج التطبيق، انتقل إلى المجلد /device/iot-device-samples/pnp-device-sample/temperature-controller-device-sample وقم بتشغيل الأمر التالي:
mvn exec:java -Dexec.mainClass="samples.com.microsoft.azure.sdk.iot.device.TemperatureController"
الجهاز جاهز الآن لتلقي الأوامر وتحديثات الخصائص، وقد بدأ بإرسال بيانات القياس عن بعد إلى المركز. الاحتفاظ بالعينة قيد التشغيل أثناء إكمال الخطوات التالية.
استخدام مستكشف إنترنت الأشياء الخاص بـAzure للتحقق من صحة التعليمات البرمجية
بعد بدء نموذج عميل الجهاز، استخدم أداة مستكشف Azure IoT للتحقق من عملها.
افتح مستكشف Azure IoT.
في صفحة IoT hubs ، إذا لم تكن قد أضفت بالفعل اتصالا إلى مركز IoT، فحدد + Add connection. أدخل سلسلة الاتصال لمركز IoT الذي أنشأته مسبقا وحدد حفظ.
في صفحة IoT أجهزة التوصيل و التشغيل Settings، حدد + Add > Local folder وحدد مجلد النماذج المحلية حيث حفظت ملفات النموذج.
في صفحة IoT hubs ، انقر فوق اسم المركز الذي تريد العمل معه. يمكنك مشاهدة قائمة الأجهزة المسجلة في مركز IoT.
انقر فوق معرف الجهاز الخاص بالجهاز الذي قمت بإنشائه مسبقا.
توضح القائمة الموجودة على اليسار أنواع المعلومات المختلفة المتاحة للجهاز.
حدد مكونات أجهزة التوصيل و التشغيل IoT لعرض معلومات النموذج لجهازك.
يمكنك عرض المكونات المختلفة للجهاز. المكون الافتراضي وأي مكون إضافي. حدد مكونًا للعمل معه.
حدد صفحة بيانات تتبع الاستخدام ثم حدد البدء لعرض بيانات تتبع الاستخدام التي يرسلها الجهاز لهذا المكون.
حدد صفحة الخصائص (للقراءة فقط) لعرض خصائص القراءة فقط التي تم الإبلاغ عنها لهذا المكون.
حدد صفحة Properties (قابل للكتابة) لعرض الخصائص القابلة للكتابة التي يمكنك تحديثها لهذا المكون.
حدد خاصية باسمها، وأدخل قيمة جديدة لها، وحدد تحديث القيمة المطلوبة.
لمشاهدة القيمة الجديدة تظهر، حدد الزر تحديث .
حدد صفحة الأوامر لعرض جميع الأوامر لهذا المكون.
حدد الأمر الذي تريد اختباره لتعيين المعلمة إن وجدت. حدد إرسال الأمر لاستدعاء الأمر على الجهاز. يمكنك مشاهدة الجهاز يستجيب للأمر في نافذة موجه الأوامر حيث يتم تشغيل نموذج التعليمات البرمجية.
مراجعة الرمز
يستخدم هذا النموذج جهاز تحكم بدرجة حرارة IoT Plug and Play. يستخدم النموذج المُنفذ لهذه العينة مكونات متعددة. يحدد ملف نموذج لغة تعريف التوائم الرقمية (DTDL) لجهاز درجة الحرارة بيانات تتبع الاستخدام والخصائص والأوامر التي ينفذها الجهاز.
تستخدم التعليمات البرمجية للجهاز الفئة القياسية DeviceClient
للاتصال بمركز IoT. يرسل الجهاز معرف الطراز الخاص بنموذج DTDL الذي ينفذه في طلب الاتصال. عندما يرسل الجهاز معرف نموذج، يصبح جهاز IoT Plug and Play:
private static void initializeDeviceClient() throws URISyntaxException, IOException {
ClientOptions options = new ClientOptions();
options.setModelId(MODEL_ID);
deviceClient = new DeviceClient(deviceConnectionString, protocol, options);
deviceClient.registerConnectionStatusChangeCallback((status, statusChangeReason, throwable, callbackContext) -> {
log.debug("Connection status change registered: status={}, reason={}", status, statusChangeReason);
if (throwable != null) {
log.debug("The connection status change was caused by the following Throwable: {}", throwable.getMessage());
throwable.printStackTrace();
}
}, deviceClient);
deviceClient.open();
}
يُخزن معرف النموذج في التعليمات البرمجية كما هو موضح في القصاصة البرمجية التالية:
private static final String MODEL_ID = "dtmi:com:example:Thermostat;1";
بعد اتصال الجهاز بمركز إنترنت الأشياء، تسجل التعليمات البرمجية معالجات الأوامر.
deviceClient.subscribeToDeviceMethod(new MethodCallback(), null, new MethodIotHubEventCallback(), null);
يوجد معالجات منفصلة لتحديثات الخاصية المطلوبة على مكوني منظم الحرارة:
deviceClient.startDeviceTwin(new TwinIotHubEventCallback(), null, new GenericPropertyUpdateCallback(), null);
Map<Property, Pair<TwinPropertyCallBack, Object>> desiredPropertyUpdateCallback = Stream.of(
new AbstractMap.SimpleEntry<Property, Pair<TwinPropertyCallBack, Object>>(
new Property(THERMOSTAT_1, null),
new Pair<>(new TargetTemperatureUpdateCallback(), THERMOSTAT_1)),
new AbstractMap.SimpleEntry<Property, Pair<TwinPropertyCallBack, Object>>(
new Property(THERMOSTAT_2, null),
new Pair<>(new TargetTemperatureUpdateCallback(), THERMOSTAT_2))
).collect(Collectors.toMap(AbstractMap.SimpleEntry::getKey, AbstractMap.SimpleEntry::getValue));
deviceClient.subscribeToTwinDesiredProperties(desiredPropertyUpdateCallback);
يرسل نموذج التعليمات البرمجية القصاصة البرمجية من كل مكون لمنظم الحرارة:
sendTemperatureReading(THERMOSTAT_1);
sendTemperatureReading(THERMOSTAT_2);
sendTemperatureReading
يستخدم الأسلوب PnpHelper
الفئة لإنشاء رسائل لكل مكون:
Message message = PnpHelper.createIotHubMessageUtf8(telemetryName, currentTemperature, componentName);
PnpHelper
تحتوي الفئة على نماذج أساليب أخرى يمكنك استخدامها مع نموذج مكون متعدد.
استخدم أداة مستكشف إنترنت الأشياء الخاص بـ Azure لعرض القصاصة البرمجية والخصائص من اثنين من مكوني منظم الحرارة:
يمكنك أيضًا استخدام أداة مستكشف إنترنت الأشياء الخاص بـ Azure لاستدعاء الأوامر في أي من مكوني الحرارة، أو في المكون الافتراضي.
يوضح لك هذا البرنامج التعليمي كيفية إنشاء نموذج لتطبيق جهاز IoT Plug and Play مع المكونات، وتوصيله بمركز IoT الخاص بك، واستخدام أداة مستكشف Azure IoT لعرض المعلومات التي يرسلها إلى المركز. تمت كتابة نموذج التطبيق لـ Node.js وتضمينه في Azure IoT Hub Device SDK لـ Node.js. يمكن لمنشئ الحلول استخدام أداة مستكشف إنترنت الأشياء الخاص بـAzure لفهم قدرات جهاز IoT Plug وPlay دون الحاجة إلى عرض أي رمز للجهاز.
في هذا البرنامج التعليمي، سوف تتعلّم:
- تحميل نموذج التعليمات البرمجية.
- تشغيل نموذج تطبيق الجهاز والتحقق من اتصاله بـIoT hub الخاصة بك.
- مراجعة التعليمة البرمجية للمصدر.
المتطلبات الأساسية
قبل المتابعة، تأكد من إعداد بيئتك، بما في ذلك مركز IoT.
لإكمال هذا البرنامج التعليمي، ستحتاج إلى وجود Node.js لجهاز التطوير الخاص بك. يمكنك تنزيل أحدث إصدار موصى به لمنصات متعددة من nodejs.org.
يمكن التحقق من الإصدار الحالي من Node.js على جهاز التطوير باستخدام الأمر التالي:
node --version
قم بتنزيل الرمز
في حالة إكمالكللبرنامج التعليمي: قم بتوصيل نموذج تطبيق جهاز IoT Plug و Play الذي يعمل بنظام التشغيل Windows بـ IoT Hub (Node)، فقد تمكنت من استنساخ المستودع بالفعل.
افتح موجه الأوامر في الدليل الذي تختاره. نفّذ الأمر التالي لاستنساخ مستودع Microsoft Azure IoT SDK Node.js GitHub في هذا الموقع:
git clone https://github.com/Azure/azure-iot-sdk-node
تثبيت المكتبات المطلوبة
يمكنك استخدام الجهاز SDK لإنشاء نموذج التعليمة البرمجية المضمنة. ويحاكي التطبيق الذي تقوم بإنشائه جهاز Plug وPlay المزود بمكونات متعددة تتصل بـIOT Hub. التطبيق يرسل القياس والبث عن بعد والخصائص ويتلقى الأوامر.
- في النافذة الطرفية المحلية، انتقل إلى مجلد المستودع المستنسخ الخاص بك وانتقل إلى مجلد /azure-iot-sdk-node/device/samples/pnp. ومن ثم شغّل الأمر التالي لتثبيت المكتبات المطلوبة:
npm install
يقوم هذا الأمر بتثبيت ملفات npm ذات الصلة المطلوبة لتشغيل العينات في المجلد.
مراجعة الرمز
انتقل إلى مجلد azure-iot-sdk-node/device/samples/javascript .
يحتوي مجلد azure-iot-sdk-node/device/samples/javascript على نموذج التعليمات البرمجية لجهاز وحدة تحكم درجة حرارة IoT أجهزة التوصيل و التشغيل.
تقوم التعليمة البرمجية الموجودة في ملف pnp_temperature_controller.js بتشغيل جهاز تحكم بدرجة حرارة IoT Plug and Play. يستخدم النموذج المُنفذ لهذه العينة مكونات متعددة. يحدد ملف نموذج لغة تعريف التوائم الرقمية (DTDL) لجهاز درجة الحرارة بيانات تتبع الاستخدام والخصائص والأوامر التي ينفذها الجهاز.
افتح ملف pnp_temperature_controller.js في محرر تعليمات برمجية من اختيارك. توضح عينة التعليمات البرمجية طريقة القيام بما يلي:
modelId
حدد هذا هو DTMI للجهاز الذي تقوم بتنفيذه. هذا الـDTMI معرّف من قبل المستخدم ويجب أن يتطابق مع DTMI لنموذج DTDL للتحكم في درجة الحرارة.تنفيذ المكونات المحددة في نموذج DTDL للتحكم في معدل درجة الحرارة. يجب أن تقوم المكونات الموجودة في وحدة التحكم في درجة الحرارة الحقيقية بتنفيذ هاتين الواجهتين. نُشرت هاتان الواجهتان بالفعل في أحد المستودعات المركزية. في هذه العينة، هاتان الواجهتان هما:
- منظم حرارة
- معلومات جهاز مطوّرة عن طريق Azure
عرّف أسماء المكونات. تحتوي هذه العينة على منظمي حرارة ومكون معلومات واحد للجهاز.
تعريف أسماء الأوامر للأوامر التي يستجيب لها الجهاز.
ضع تعريفًا
serialNumber
للثابت.serialNumber
يثبت على أي جهاز معين.عرف لمعالجات الأوامر.
عرّف الوظائف لإرسال استجابات الأوامر.
عرّف وظائف المساعد لتسجيل طلبات الأوامر.
عرّف وظيفة مساعد لإنشاء الخصائص.
عرّف وحدة الإصغاء لتقبل تحديثات الخصائص.
عرّف وظيفة لإرسال بيانات تتبع الاستخدام من هذا الجهاز. ترسل كل من منظمات الحرارة والمكون الافتراضي بيانات تتبع الاستخدام. تتلقى هذه الوظيفة اسم المكون كمعلمة.
عرّف وظيفة
main
التي تقوم بما يلي:تستخدم جهاز SDK لإنشاء عميل له والاتصال IoT hub الخاصة بك. إرسال الجهاز
modelId
بحيث يمكن لمركز IoT تحديد الجهاز باعتباره جهاز IoT Plug وPlay.تبدأ الاستماع لطلبات الأوامر باستخدام الوظيفة
onDeviceMethod
. تقوم الوظيفة بإعداد وحدة الإصغاء لطلبات الأوامر من الخدمة:- يعرّف الجهاز DTDL
reboot
وأوامرgetMaxMinReport
. - تحدد الوظيفة
commandHandler
طريقة استجابة الجهاز للأمر.
- يعرّف الجهاز DTDL
بدء إرسال بيانات تتبع الاستخدام باستخدام
setInterval
وsendTelemetry
.تستخدم الوظيفة
helperCreateReportedPropertiesPatch
لإنشاء الخصائص وupdateComponentReportedProperties
لتحديث الخصائص.يستخدم
desiredPropertyPatchListener
للاستماع لتحديثات الخصائص.تعطيل جميع وحدات الإصغاء والمهام ثم إنهاء الحلقة عند الضغط على Q أو q.
في إعداد بيئتك، قمت بإنشاء أربعة متغيرات بيئة لتكوين العينة لاستخدام خدمة توفير الأجهزة (DPS) للاتصال بمركز إنترنت الأشياء الخاص بك:
-
IOTHUB_DEVICE_SECURITY_TYPEمع القيمة
DPS
. - IOTHUB_DEVICE_DPS_ID_SCOPE مع نطاق معرف DPS.
-
IOTHUB_DEVICE_DPS_DEVICE_IDمع القيمة
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEYمع مفتاح التسجيل الأساسي.
-
IOTHUB_DEVICE_DPS_ENDPOINTمع القيمة
global.azure-devices-provisioning.net
لمعرفة المزيد حول تكوين العينة، راجع نموذج readme.
بعد أن تعرّفت الآن على التعليمات البرمجية، استخدم الأمر التالي لتشغيل العينة:
node pnp_temperature_controller.js
تشاهد المخرج التالي، الذي يشير إلى أن الجهاز قد بدأ بإرسال بيانات القياس والبث عن بعد إلى لوحة الوصل، وهو الآن جاهز لتلقي الأوامر وتحديثات الخصائص.
الاحتفاظ بالعينة قيد التشغيل أثناء إكمال الخطوات التالية.
استخدام مستكشف إنترنت الأشياء الخاص بـAzure للتحقق من صحة التعليمات البرمجية
بعد بدء نموذج عميل الجهاز، استخدم أداة مستكشف Azure IoT للتحقق من عملها.
افتح مستكشف Azure IoT.
في صفحة IoT hubs ، إذا لم تكن قد أضفت بالفعل اتصالا إلى مركز IoT، فحدد + Add connection. أدخل سلسلة الاتصال لمركز IoT الذي أنشأته مسبقا وحدد حفظ.
في صفحة IoT أجهزة التوصيل و التشغيل Settings، حدد + Add > Local folder وحدد مجلد النماذج المحلية حيث حفظت ملفات النموذج.
في صفحة IoT hubs ، انقر فوق اسم المركز الذي تريد العمل معه. يمكنك مشاهدة قائمة الأجهزة المسجلة في مركز IoT.
انقر فوق معرف الجهاز الخاص بالجهاز الذي قمت بإنشائه مسبقا.
توضح القائمة الموجودة على اليسار أنواع المعلومات المختلفة المتاحة للجهاز.
حدد مكونات أجهزة التوصيل و التشغيل IoT لعرض معلومات النموذج لجهازك.
يمكنك عرض المكونات المختلفة للجهاز. المكون الافتراضي وأي مكون إضافي. حدد مكونًا للعمل معه.
حدد صفحة بيانات تتبع الاستخدام ثم حدد البدء لعرض بيانات تتبع الاستخدام التي يرسلها الجهاز لهذا المكون.
حدد صفحة الخصائص (للقراءة فقط) لعرض خصائص القراءة فقط التي تم الإبلاغ عنها لهذا المكون.
حدد صفحة Properties (قابل للكتابة) لعرض الخصائص القابلة للكتابة التي يمكنك تحديثها لهذا المكون.
حدد خاصية باسمها، وأدخل قيمة جديدة لها، وحدد تحديث القيمة المطلوبة.
لمشاهدة القيمة الجديدة تظهر، حدد الزر تحديث .
حدد صفحة الأوامر لعرض جميع الأوامر لهذا المكون.
حدد الأمر الذي تريد اختباره لتعيين المعلمة إن وجدت. حدد إرسال الأمر لاستدعاء الأمر على الجهاز. يمكنك مشاهدة الجهاز يستجيب للأمر في نافذة موجه الأوامر حيث يتم تشغيل نموذج التعليمات البرمجية.
يوضح لك هذا البرنامج التعليمي كيفية إنشاء نموذج لتطبيق جهاز IoT Plug and Play مع المكونات، وتوصيله بمركز IoT الخاص بك، واستخدام أداة مستكشف Azure IoT لعرض المعلومات التي يرسلها إلى المركز. تمت كتابة نموذج التطبيق بلغة Python وتم تضمينه في Azure IoT device SDK for Python. يمكن لمنشئ الحلول استخدام أداة مستكشف إنترنت الأشياء الخاص بـAzure لفهم قدرات جهاز IoT Plug وPlay دون الحاجة إلى عرض أي رمز للجهاز.
في هذا البرنامج التعليمي، سوف تتعلّم:
- تحميل نموذج التعليمات البرمجية.
- تشغيل نموذج تطبيق الجهاز والتحقق من اتصاله بـIoT hub الخاصة بك.
- مراجعة التعليمة البرمجية للمصدر.
المتطلبات الأساسية
قبل المتابعة، تأكد من إعداد بيئتك، بما في ذلك مركز IoT.
يمكنك إكمال هذا البرنامج التعليمي على Linux أو Windows. أوامر shell في هذا البرنامج التعليمي تتبع اصطلاح Linux لفواصل المسار ''،/
إذا كنت تتابع على Windows فتأكد من تبديل هذه الفواصل بـ '\
'.
لإكمال هذا البرنامج التعليمي، تحتاج إلى تثبيت Python على جهاز التطوير الخاص بك. تحقق من Azure IoT Python SDK لمعرفة متطلبات إصدار Python الحالية. يمكنك التحقق من إصدار Python الخاص بك باستخدام الأمر التالي:
python --version
يمكنك تنزيل أحدث إصدار موصى به لمنصات متعددة من python.org.
قم بتنزيل الرمز
يتم نشر azure-iot-device ك PIP.
في بيئة Python المحلية، قم بتثبيت الحزمة كما يلي:
pip install azure-iot-device
إذا أكملت البرنامج التعليمي: قم بتوصيل نموذج تطبيق جهاز IoT Plug and Play الذي يعمل على Windows إلى IoT Hub (Python) ، فقد قمت بالفعل باستنساخ المستودع.
استنساخ مستودع Python SDK IoT:
git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python
مراجعة الرمز
يستخدم هذا النموذج جهاز تحكم بدرجة حرارة IoT Plug and Play. يستخدم النموذج المُنفذ لهذه العينة مكونات متعددة. يحدد ملف نموذج لغة تعريف التوائم الرقمية (DTDL) لجهاز درجة الحرارة بيانات تتبع الاستخدام والخصائص والأوامر التي ينفذها الجهاز.
يحتوي المجلد azure-iot-sdk-python/samples/pnp على نموذج التعليمات البرمجية لجهاز IoT أجهزة التوصيل و التشغيل. الملفات الخاصة بعينة وحدة تحكم درجة الحرارة هي:
- temp_controller_with_thermostats.py
- pnp_helper.py
يحتوي جهاز التحكم في درجة الحرارة على مكونات متعددة ومكون افتراضي، بناءً على نموذج DTDL للتحكم في درجة الحرارة.
افتح ملف temp_controller_with_thermostats.py في محرر من اختيارك. التعليمات البرمجية في هذا الملف:
استيراد
pnp_helper.py
للحصول على الوصول إلى أساليب المساعدة.يعرّف معرّفين للنماذج الرقمية المزدوجة (DTMIs) اللذان يمثلان بشكل فريد واجهتين مختلفتين، معرّفين في نموذج DTDL. يجب أن تقوم المكونات الموجودة في وحدة التحكم في درجة الحرارة الحقيقية بتنفيذ هاتين الواجهتين. نُشرت هاتان الواجهتان بالفعل في أحد المستودعات المركزية. يجب أن تكون DTMIs معروفة للمستخدم وأن تختلف اعتماداً على سيناريو تنفيذ الجهاز. بالنسبة للعينة الحالية، تمثل هاتان الواجهتان:
- منظم حرارة
- معلومات الجهاز التي تم تطويرها بواسطة Azure.
تحديد DTMI
model_id
للجهاز الجاري تنفيذه. DTMI هو معرف من قبل المستخدم ويجب أن يتطابق مع DTMI في ملف نموذج DTDL.تعريف الأسماء المعطاة للمكونات الموجودة في ملف DTDL. هناك نوعان من منظمات الحرارة في DTDL ومكون واحد من معلومات الجهاز. يتم تعريف ثابت يسمى
serial_number
أيضاً في المكون الافتراضي. لا يمكن تغييرserial_number
لجهاز.تعريف تطبيقات معالج الأوامر. تحدد هذه المعالجات ما يفعله الجهاز عندما يتلقى طلبات الأوامر.
تحديد الدوال لإنشاء استجابة الأمر. تحدد هذه الوظائف كيفية استجابة الجهاز لطلبات الأوامر. إنشاء دالات استجابة الأمر إذا كان الأمر يحتاج إلى إرسال استجابة مخصصة إلى IoT hub. إذا لم يتم توفير دالة استجابة لأمر، يتم إرسال استجابة عامة. في هذا النموذج، فقط الأمر getMaxMinReport لديه استجابة مخصصة.
تعريف دالة لإرسال القياس عن بعد من هذا الجهاز. ترسل كل من منظمات الحرارة والمكون الافتراضي القياس عن بعد. تحتوي هذه الدالة على معلمة اسم مكون اختياري لتمكينها من تحديد المكون الذي أرسل القياس عن بعد.
تعريف وحدة إصغاء لطلبات الأوامر.
تعريف وحدة إصغاء لتحديثات الخاصية المطلوبة.
لديه
main
دالة:تستخدم جهاز SDK لإنشاء عميل له والاتصال IoT hub الخاصة بك. يرسل الجهاز
model_id
بحيث يمكن لمحور IoT تحديد الجهاز كجهاز توصيل وتشغيل IoT.يستخدم
create_reported_properties
الدالة في ملف المساعد لإنشاء الخصائص. تمرير اسم المكون والخصائص كأزواج قيمة المفتاح إلى هذه الدالة.تحديث خصائص قابل للقراءة لمكوناته عن طريق الاستدعاء
patch_twin_reported_properties
.تبدأ الاستماع لطلبات الأوامر باستخدام الوظيفة
execute_command_listener
. تقوم الدالة بإعداد وحدة إصغاء لطلبات الأوامر من الخدمة. عند إعداد وحدة الاستماع، فإنك توفرmethod_name
وuser_command_handler
اختياريةcreate_user_response_handler
كمعلمات.- يحدد
method_name
طلب الأمر. في هذا النموذج، يحدد النموذج إعادة تشغيل الأوامر، و getMaxMinReport. -
user_command_handler
تعرف الدالة ما يجب على الجهاز القيام به عند تلقي أمر. - تنشئ الدالة
create_user_response_handler
استجابة لإرسالها إلى مركز إنترنت الأشياء الخاص بك عندما يتم تنفيذ الأمر بنجاح. يمكنك عرض هذه الاستجابة في البوابة. إذا لم يتم توفير هذه الدالة، يتم إرسال استجابة عامة إلى الخدمة.
- يحدد
يستخدم
execute_property_listener
للاستماع لتحديثات الخصائص.تبدأ بإرسال القياس عن بعد باستخدام
send_telemetry
. يستخدم نموذج التعليمات البرمجية حلقة لاستدعاء ثلاث دوال إرسال القياس عن بعد. يتم استدعاء كل واحد كل ثماني ثوانتعطيل جميع وحدات الإصغاء والمهام ثم إنهاء الحلقة عند الضغط على Q أو q.
في إعداد بيئتك، قمت بإنشاء أربعة متغيرات بيئة لتكوين العينة لاستخدام خدمة توفير الأجهزة (DPS) للاتصال بمركز إنترنت الأشياء الخاص بك:
-
IOTHUB_DEVICE_SECURITY_TYPEمع القيمة
DPS
. - IOTHUB_DEVICE_DPS_ID_SCOPE مع نطاق معرف DPS.
-
IOTHUB_DEVICE_DPS_DEVICE_IDمع القيمة
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEYمع مفتاح التسجيل الأساسي.
-
IOTHUB_DEVICE_DPS_ENDPOINTمع القيمة
global.azure-devices-provisioning.net
لمعرفة المزيد حول تكوين العينة، راجع نموذج readme.
استخدم الأمر التالي لتشغيل النموذج:
python temp_controller_with_thermostats.py
يرسل جهاز العينة رسائل القياس عن بعد كل بضع ثوان إلى IoT hub الخاصة بك.
تشاهد النتائج التالية، والتي يشير إلى أن الجهاز يقوم بإرسال بيانات القياس عن بعد إلى لوحة الوصل، وهو الآن جاهز لتلقي الأوامر وتحديثات الخصائص.
الاحتفاظ بالعينة قيد التشغيل أثناء إكمال الخطوات التالية.
استخدام مستكشف إنترنت الأشياء الخاص بـAzure للتحقق من صحة التعليمات البرمجية
بعد بدء نموذج عميل الجهاز، استخدم أداة مستكشف Azure IoT للتحقق من عملها.
افتح مستكشف Azure IoT.
في صفحة IoT hubs ، إذا لم تكن قد أضفت بالفعل اتصالا إلى مركز IoT، فحدد + Add connection. أدخل سلسلة الاتصال لمركز IoT الذي أنشأته مسبقا وحدد حفظ.
في صفحة IoT أجهزة التوصيل و التشغيل Settings، حدد + Add > Local folder وحدد مجلد النماذج المحلية حيث حفظت ملفات النموذج.
في صفحة IoT hubs ، انقر فوق اسم المركز الذي تريد العمل معه. يمكنك مشاهدة قائمة الأجهزة المسجلة في مركز IoT.
انقر فوق معرف الجهاز الخاص بالجهاز الذي قمت بإنشائه مسبقا.
توضح القائمة الموجودة على اليسار أنواع المعلومات المختلفة المتاحة للجهاز.
حدد مكونات أجهزة التوصيل و التشغيل IoT لعرض معلومات النموذج لجهازك.
يمكنك عرض المكونات المختلفة للجهاز. المكون الافتراضي وأي مكون إضافي. حدد مكونًا للعمل معه.
حدد صفحة بيانات تتبع الاستخدام ثم حدد البدء لعرض بيانات تتبع الاستخدام التي يرسلها الجهاز لهذا المكون.
حدد صفحة الخصائص (للقراءة فقط) لعرض خصائص القراءة فقط التي تم الإبلاغ عنها لهذا المكون.
حدد صفحة Properties (قابل للكتابة) لعرض الخصائص القابلة للكتابة التي يمكنك تحديثها لهذا المكون.
حدد خاصية باسمها، وأدخل قيمة جديدة لها، وحدد تحديث القيمة المطلوبة.
لمشاهدة القيمة الجديدة تظهر، حدد الزر تحديث .
حدد صفحة الأوامر لعرض جميع الأوامر لهذا المكون.
حدد الأمر الذي تريد اختباره لتعيين المعلمة إن وجدت. حدد إرسال الأمر لاستدعاء الأمر على الجهاز. يمكنك مشاهدة الجهاز يستجيب للأمر في نافذة موجه الأوامر حيث يتم تشغيل نموذج التعليمات البرمجية.
تنظيف الموارد
إذا كنت تخطط لمتابعة المزيد من مقالات مطوري الأجهزة، يمكنك الاحتفاظ بالموارد التي استخدمتها في هذه المقالة وإعادة استخدامها. وإلا، يمكنك حذف الموارد التي أنشأتها في هذه المقالة لتجنب المزيد من الرسوم.
يمكنك حذف كل من الموزع والجهاز المسجل مرة واحدة عن طريق حذف مجموعة الموارد بأكملها باستخدام أمر Azure CLI التالي. لا تستخدم هذا الأمر إذا كانت هذه الموارد تشارك مجموعة موارد مع موارد أخرى تريد الاحتفاظ بها.
az group delete --name <YourResourceGroupName>
لحذف مركز IoT فقط، تشغّل الأمر التالي باستخدام Azure CLI:
az iot hub delete --name <YourIoTHubName>
لحذف هوية الجهاز التي قمت بتسجيلها مع لوحة الوصل الخاصة بك، IoT فقط، قم بتشغيل الأمر التالي باستخدام Azure CLI:
az iot hub device-identity delete --hub-name <YourIoTHubName> --device-id <YourDeviceID>
قد ترغب أيضًا في إزالة ملفات العينات المستنسخة من جهاز التطوير.
الخطوات التالية
في هذا البرنامج التعليمي، تعلمت كيفية توصيل جهاز IoT Plug and Play بمكونات إلى مركز IoT. لمعرفة المزيد حول طرازات أجهزة IoT Plug and Play، راجع: