تمرين - مراقبة أجهزتك والتحكم فيها برمجياً

مكتمل

للتحكم في الأجهزة برمجياً، يُمكنك استخدام واجهة برمجة تطبيقات REST الخاصة بـ IoT Central.

تريد تمكين تطبيق إدارة الأسطول الحالي للتحكم في الأجهزة المتصلة بتطبيق IoT Central الخاص بك برمجياً.

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

استعلام واجهة برمجة تطبيقات REST حاليًا قيد المعاينة.

عرض بيانات تتبع استخدام الجهاز

يمكنك استخدام واجهة برمجة تطبيقات REST للاستعلام عن بيانات تتبع استخدام الجهاز. شغل الأوامر التالية لعرض آخر خمس قيم معروفة للموقع ودرجة الحرارة من جهاز sim-truck-001. قد تحتاج إلى الانتظار بضع دقائق قبل أن يبدأ جهاز المحاكاة في إرسال بيانات تتبع الاستخدام ويُمكن تشغيل هذا الأمر بنجاح:

# The FROM clause in the query needs the device template id.

TEMPLATE_ID=`az rest -m get -u https://$APP_NAME.azureiotcentral.com/api/devices/sim-truck-001 \
--url-parameters api-version=1.0 \
--headers Authorization="$OPERATOR_TOKEN" \
--query "template" -o tsv`

az rest -m post -u https://$APP_NAME.azureiotcentral.com/api/query \
--url-parameters api-version=1.1-preview \
--headers Authorization="$OPERATOR_TOKEN" Content-Type=application/json \
--body '{
    "query": "SELECT TOP 5 $id AS device-id, $ts AS timestamp, ContentsTemperature, Location FROM '"$TEMPLATE_ID"' WHERE device-id = '"'sim-truck-001'"' ORDER BY timestamp DESC"
}'

لمعرفة المزيد، راجع كيفية استخدام واجهة برمجة تطبيقات IoT Central REST للاستعلام عن الأجهزة.

عرض خصائص الجهاز

يمكنك استخدام واجهة برمجة تطبيقات REST لعرض خصائص الجهاز. يمكنك تشغيل الأمر التالي لاسترداد الخصائص الحالية من جهاز sim-truck-001. تم تعيين قيمة الخاصية من خلال المحاكاة:

az rest -m get -u https://$APP_NAME.azureiotcentral.com/api/devices/sim-truck-001/properties \
--url-parameters api-version=1.0 \
--headers Authorization="$OPERATOR_TOKEN"

تعيين خاصية

حدد قالب جهاز الشاحنة المبرد خاصية درجة حرارة الهدف في المكون الافتراضي:

{
  "@type": [
    "Property",
    "Temperature"
  ],
  "displayName": {
    "en": "Target Temperature"
  },
  "name": "TargetTemperature",
  "schema": "double",
  "unit": "degreeCelsius",
  "writable": true
}

شغّل الأمر التالي في Cloud Shell لتعيين درجة الحرارة الهدف إلى 12.5 في المكون الافتراضي على أحد أجهزة المحاكاة في التطبيق:

az rest -m put -u https://$APP_NAME.azureiotcentral.com/api/devices/sim-truck-001/properties \
--url-parameters api-version=1.0 \
--headers Authorization="$OPERATOR_TOKEN" --body \
'{
  "TargetTemperature": 12.5
}'

تعكس الاستجابة لهذا الطلب القيمة المطلوبة للخاصية لتأكيد استلام الجهاز لها.

يمكنك تشغيل الأمر التالي لمشاهدة القيمة الجديدة للخاصية:

az rest -m get -u https://$APP_NAME.azureiotcentral.com/api/devices/sim-truck-001/properties \
--url-parameters api-version=1.0 \
--headers Authorization="$OPERATOR_TOKEN"

تعيين خاصية السحابة

توجد واجهات برمجة تطبيقات REST لخاصية السحابة حاليًا في المعاينة.

حدد قالب جهاز الشاحنة المبرد خاصية السحابة تاريخ الصيانة الأخير في نموذج الحل:

{
  "@type": "CloudProperty",
  "displayName": "Last maintenance date",
  "name": "maintenancedate",
  "schema": "string",
  "valueDetail": {
    "@type": "StringValueDetail"
  }
}

يمكنك تشغيل الأمر التالي في Cloud Shell لتعيين تاريخ الصيانة الأخير إلى 12.5 لأحد الأجهزة الحقيقية في التطبيق:

az rest -m patch -u https://$APP_NAME.azureiotcentral.com/api/devices/real-truck-001/cloudProperties \
--url-parameters api-version=preview \
--headers Authorization="$OPERATOR_TOKEN" --body \
'{
  "maintenancedate": "December 2020"
}'
az rest -m get -u https://$APP_NAME.azureiotcentral.com/api/devices/real-truck-001/cloudProperties \
--url-parameters api-version=preview \
--headers Authorization="$OPERATOR_TOKEN"

إرسال أمر

حدد قالب جهاز مراقبة المركبة الأمر Get Max-Min report في المكون الافتراضي:

{
  "@type": "Command",
  "name": "getMaxMinReport",
  "displayName": "Get Max-Min report.",
  "description": "This command returns the max, min and average temperature from the specified time to the current time.",
  "request": {
    "name": "since",
    "displayName": "Since",
    "description": "Period to return the max-min report.",
    "schema": "dateTime"
  },
  "response": {
    "name": "tempReport",
    "displayName": "Temperature Report",
    "schema": {
      "@type": "Object",
      "fields": [
        {
          "name": "maxTemp",
          "displayName": "Max temperature",
          "schema": "double"
        },
        {
          "name": "minTemp",
          "displayName": "Min temperature",
          "schema": "double"
        },
        {
          "name": "avgTemp",
          "displayName": "Average Temperature",
          "schema": "double"
        },
        {
          "name": "startTime",
          "displayName": "Start Time",
          "schema": "dateTime"
        },
        {
          "name": "endTime",
          "displayName": "End Time",
          "schema": "dateTime"
        }
      ]
    }
  }
}

يمكنك تشغيل الأمر التالي في Cloud Shell لإرسال أمر Get Max-Min report إلى أحد أجهزة المحاكاة في التطبيق. يستعين الأمر Get Max-Min report بمعلمة تحدد بداية الفترة الزمنية للتقرير:

SINCE=`date -d "now -2 hours" -Ins`
az rest -m post -u https://$APP_NAME.azureiotcentral.com/api/devices/sim-truck-001/commands/getMaxMinReport \
--url-parameters api-version=1.0 \
--headers Authorization="$OPERATOR_TOKEN" --body \
'{
    "since": "'$SINCE'"
}'

يمكنك عرض محفوظات الأمر لأحد الأوامر لاسترداد أحدث استجابة:

az rest -m get -u https://$APP_NAME.azureiotcentral.com/api/devices/sim-truck-001/commands/getMaxMinReport \
--url-parameters api-version=1.0 \
--headers Authorization="$OPERATOR_TOKEN"