تمرين - نشر دالة Azure إلى IoT Edge

مكتمل

تصفية القياس عن بعد المرسل من قبل الجهاز.

تذكر أنك تريد تقليل كمية البيانات المرسلة من كل متجر. لتقليل كمية القياس عن بُعد المرسلة إلى تطبيق IoT Central الخاص بك، فأنت تريد تصفية البيانات الموجودة على جهاز IoT Edge الخاص بك قبل إرسالها.

هنا، ستستخدم Azure Functions التي تعمل على جهاز IoT Edge لتنفيذ عامل تصفية. يضمن عامل التصفية أن الجهاز يرسل فقط بيانات تتبع الاستخدام عندما تكون درجة الحرارة المحيطة أعلى من 21 درجة مئوية.

إشعار

هذا التمرين اختياري. إذا كنت ترغب في إكمال هذا التمرين، فستحتاج إلى إنشاء اشتراك Azure قبل البدء. إذا لم يكن لديك حساب Azure أو كنت لا تريد إنشاء حساب في الوقت الحالي، يمكنك قراءة الإرشادات حتى تفهم المعلومات التي يتم تقديمها.

إنشاء سجل حاويات

سيحتاج جهاز IoT Edge الخاص بك إلى تنزيل وتثبيت وحدة وظائف Azure المخصصة التي تنفذ عامل التصفية. يتم حزم وحدات IoT Edge كصور متوافقة مع Docker يمكنك تخزينها في مستودع حاويات. لقد قررت استخدام سجل حاويات Azure (ACR) لتخزين الوحدة النمطية الجديدة. كما ستستخدم ACR لإنشاء الحاوية من مشروع مصدر.

تشغيل الأوامر التالية لإضافة تسجيل حاوية إلى مجموعة الموارد في Azure:

REGISTRY_NAME="edgecentral$RANDOM"
az acr create -n $REGISTRY_NAME -g <rgn>[sandbox resource group name]</rgn> --sku Standard --admin-enabled true
az acr credential show -n $REGISTRY_NAME
echo "Your registry name is: $REGISTRY_NAME"

قم بتدوين ملاحظة عن اسم التسجيل password وقيمه، يمكنك استخدامها لاحقا في هذه الوحدة.

إنشاء مشروع Azure Functions

أنت تستخدم C# لتنفيذ الدالة. تشغيل الأوامر التالية لتثبيت قالب المشروع ومن ثم إنشاء مشروع skeleton:

dotnet new -i Microsoft.Azure.IoT.Edge.Function
dotnet new aziotedgefunction -n FilterFunction -r $REGISTRY_NAME.azurecr.io/filterfunction
cd FilterFunction
ls

شغِّل الأمر التالي لاستبدال FilterFunction.cs بتطبيق يقوم بتصفية بيانات تتبع استخدام درجة حرارة الجهاز:

curl -O https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/iotedge/FilterFunction.cs

الآن يمكنك بناء الصورة وتحميلها على سجل الحاويات الخاصة بك. توقع أن يستغرق تشغيل هذا الأمر بضع دقائق:

az acr build --registry $REGISTRY_NAME --image filterfunction:v1 -f Dockerfile.amd64 .

يمكنك سرد الصور في السجل الخاص بك باستخدام الأمر التالي:

az acr repository list --name $REGISTRY_NAME

تحديث بيان التوزيع

لاستخدام وحدة التصفية الجديدة على جهاز IoT Edge، قم بتحديث بيان النشر بالإصدار الجديد.

قم بتنزيل بيان النشر الجديد وتعريف الواجهة إلى جهازك المحلي بالنقر بزر الماوس الأيمن على الروابط التالية واختيار حفظ باسم:

افتح EnvironmentalSensorManifestFilter-1-4.json في محرر نص وقم بتحديثه لاستخدام وحدة التصفية من سجل الحاوية:

  1. استبدال المثيلات الثلاثة <YOUR CONTAINER REGISTRY NAME> باسم تسجيل الحاوية. يبدو الاسم مثل edgecentral27912.
  2. استبدل <YOUR CONTAINER REGISTRY PASSWORD>بكلمة المرور التي قمت بتدوين ملاحظة عنها سابقاً في هذه الوحدة.
  3. ا‏‏حفظ التغييرات.

هذا الإصدار من بيان التوزيع:

  • إضافة الوحدة النمطية باستخدام الدالة Azure التي قمت بإنشائها:

    "filterfunction": {
      "version": "1.0",
      "type": "docker",
      "status": "running",
      "restartPolicy": "always",
      "settings": {
        "image": "<YOUR CONTAINER REGISTRY NAME>.azurecr.io/filterfunction:v1",
        "createOptions": ""
      }
    
  • توجيه مخرجات الوحدة النمطية SimulatedTemperatureSensor إلى وحدة تصفية الوظائف قبل إرسال القياس عن بعد المنقح إلى التطبيق IoT Central الخاص بك:

    "routes": {
        "FilterFunctionToIoTCentral": "FROM /messages/modules/filterfunction/outputs/* INTO $upstream",
        "sensorToFilterFunction": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/filterfunction/inputs/input1\")"
      },
    

لتحميل بيان النشر الجديد:

  1. في تطبيق IoT Central، انتقل إلى بيانات Edge وحدد بيان الاستشعار البيئي.

  2. في صفحة تخصيص، قم بتحميل ملف EnvironmentalSensorManifestFilter-1-4.json الجديد. حدد التالي.

  3. تعرض صفحة المراجعة والانتهاء الوحدة النمطية الجديدة لعامل التصفية. حدد حفظ.

  4. انتقل إلى جهاز Edge للمستشعر البيئي - جهاز store-001 من صفحة الأجهزة وحدد الوحدات النمطية.

  5. في صفحة Modules، حدد Manage manifest > Assign edge manifest. حدد بيان المستشعر البيئي.

  6. تتضمن قائمة الوحدات النمطية الآن الوحدة النمطية عامل التصفية قيد التشغيل:

Screenshot that shows the FilterFunction module running on the IoT Edge device.

تحديث قالب الجهاز لاستخدام الوحدة النمطية الجديدة

يرسل جهاز IoT Edge الآن بيانات تتبع الاستخدام من خلال واجهة عامل التصفية بدلا من واجهة بيانات تتبع الاستخدام . لذلك، تحتاج إلى تحديث قالب الجهاز وطرق العرض:

  1. انتقل إلى جهاز Edge للمستشعر البيئي في صفحة قوالب الجهاز.

  2. حدد Modules، ثم حدد Import modules from manifest.

  3. في مربع الحوار Import modules ، حدد Environmental Sensor، ثم حدد Import.

Screenshot that shows the FilterFunction module added to the device template.

الوحدة النمطية الجديدة الآن يرسل القياس عن بعد إلى IoT Central. بعد ذلك، أضف واجهة إلى وحدة التصفية الجديدة التي تحدد القياس عن بعد وتحديث المخطط:

  1. حدد عامل تصفية الوحدة النمطية، ثم + إضافة واجهة موروثة. قد تحتاج إلى تحديد ...
  2. اختر الإطار المتجانب استيراد واجهة. حدد TelemetryInterface.jsفي الملف الذي قمت بتنزيله مسبقاً.

يمكنك إزالة واجهة القياس عن بعد الأصلي لأن SimulatedTemperatureModule لم يعد يرسل القياس عن بعد مباشرة إلى IoT Central. يُوجَّه الإخراج من هذه الوحدة إلى وحدة FilterFunction بواسطة IoT Edge runtime:

  1. حدد واجهة القياس عن بعد في الوحدة النمطية SimulatedTemperatureSensor.
  2. حدد حذف ثم قم بتأكيد العملية.

تعديل طريقة العرض "عرض IoT Edge" جهاز القياس عن بعد لعرض القياس عن بعد المرسلة بواسطة الوحدة النمطية FilterFunction:

  1. في قالب الجهاز، حدد طريقة العرض View IoT Edge device telemetry، ثم حدد الخيار Edit في الصورة المصغرة من المخطط البياني.
  2. أضف المحيط / درجة الحرارةوالرطوبةوالآلة / درجة الحرارةوأنواع القياس عن بعد الضغط.
  3. حدد تحديث ثم حفظ لحفظ التغييرات.
  4. حدد نشر لنشر الإصدار الجديد من قالب الجهاز.

تحقق من عملك

لعرض بيانات تتبع الاستخدام التي تمت تصفيتها من جهاز IoT Edge:

  1. انتقل إلى جهاز store-001 على صفحة الأجهزة .

  2. حدد طريقة عرض قياس عن بعد لجهاز IoT Edge.

  3. يمكنك مشاهدة القياس عن بعد الذي تمت تصفيته على المخطط. لا توجد قيم تظهر بمتوسط درجة حرارة محيطة أقل من 21.0 درجة.

    Screenshot that shows telemetry plot with no average ambient temperature values less than 21.

إذا بدا أن الجهاز توقف عن إرسال بيانات تتبع الاستخدام، فمن المحتمل أن يكون ذلك بسبب توقف الوحدة النمطية SimulatedTemperatureSensor بعد إرسال 500 رسالة. إذا قمت بإعادة تشغيل الجهاز الظاهري، يتم إعادة تعيين العد ثم تشاهد القياس عن بعد بدء التدفق مرة أخرى:

az vm restart --resource-group <rgn>[sandbox resource group name]</rgn> \
  --name $(az vm list --resource-group <rgn>[sandbox resource group name]</rgn> --query [0].name -o tsv)