الأخطاء والاستثناءات

يسرد هذا المستند الأخطاء والاستثناءات المتوافقة رسميًا مع الأجهزة المنزلية الذكية. يُرجى استخدام رموز الأخطاء والاستثناءات المحدّدة هذه في الردّ على الطلب، أو في الإشعارات إذا كنت قد نفّذتها، لكي ينبّه "مساعد Google" المستخدمين النهائيين إلى المشاكل المتعلّقة بأمر معيّن أو حالة جهاز معيّنة. إذا كان الردّ يحتوي على تنسيق غير صحيح أو errorCode، سيعرض "مساعد Google" رسالة خطأ عامة للمستخدمين، مثل "عذرًا، الجهاز غير متاح حاليًا".

الأخطاء

يجب عرض رمز خطأ عندما تتسبب مشكلة في تعذُّر تنفيذ طلب أو استعلام. على سبيل المثال، إذا كان قفل الباب محشورًا ولا يمكن قفله أو فتحه، يجب إرجاع خطأ بشأن هذه الحالة إلى المستخدم.

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

باختصار:

  • خطأ على المستوى العام: جميع الأجهزة في الاستجابة بها الخطأ نفسه
  • خطأ على المستوى المحلي: استجابة مختلطة مع حالات خطأ ونجاح

الأخطاء على المستوى العام

يوضّح مقتطف JSON التالي كيفية عرض الأخطاء على المستوى العام في استجابة QUERY أو EXECUTE.

في ما يلي مثال على الخطأ deviceOffline على المستوى العام بسبب عدم اتصال المحور بالإنترنت:

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "errorCode": "deviceOffline",
    "status" : "ERROR"
  }
}

في ما يلي مثال على الخطأ inSoftwareUpdate على المستوى العام بسبب تحديث المركز:

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "errorCode": "inSoftwareUpdate",
    "status" : "ERROR"
  }
}

الأخطاء على مستوى الجهاز

ردّ على طلب البحث

يوضّح مقتطف JSON التالي كيفية عرض الأخطاء على مستوى الجهاز في استجابة QUERY.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "devices": {
      "device-id-1": {
        "errorCode": "deviceOffline",
        "status" : "ERROR"
      },
      "device-id-2": {
        "errorCode": "deviceOffline",
        "status" : "ERROR"
      }
    }
  }
}

ردّ EXECUTE

يوضّح مقتطف JSON التالي كيفية عرض الأخطاء على مستوى الجهاز في استجابة EXECUTE.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [
      {
        "ids": [
          "device-id-1"
        ],
        "status": "ERROR",
        "errorCode": "deviceOffline"
      },
      {
        "ids": [
          "device-id-2"
        ],
        "status": "SUCCESS",
        "states": {
          "on": true,
          "online": true
        }
      }
    ]
  }
}

الإشعارات التي تتضمّن أخطاء

إشعار استباقي

يوضّح مقتطف JSON التالي كيفية الإبلاغ عن الأخطاء على مستوى الجهاز في إشعار استباقي.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "agentUserId": "agent-user-id-1",
  "eventId": "unique-event-id-1",
  "payload": {
    "devices": {
      "notifications": {
        "device-id-1": {
          "RunCycle": {
            "priority": 0,
            "status": "FAILURE",
            "errorCode": "deviceDoorOpen"
          }
        }
      }
    }
  }
}

ردّ المتابعة

يوضّح مقتطف JSON التالي كيفية الإبلاغ عن الأخطاء على مستوى الجهاز في ردّ المتابعة.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "agentUserId": "agent-user-id-1",
  "eventId": "unique-event-id-1",
  "payload": {
    "devices": {
      "notifications": {
        "device-id-1": {
          "LockUnlock": {
            "priority": 0,
            "followUpResponse": {
              "status": "FAILURE",
              "errorCode": "deviceJammingDetected",
              "followUpToken": "PLACEHOLDER"
            }
          }
        }
      }
    }
  }
}

قائمة الأخطاء

ستؤدي الأخطاء التالية إلى ظهور رسالة تحويل النص إلى كلام (TTS) المرتبطة بها على الجهاز.

  • aboveMaximumLightEffectsDuration : تتجاوز هذه المدة الحد الأقصى المسموح به وهو ساعة واحدة. يُرجى إعادة المحاولة.
  • aboveMaximumTimerDuration : يمكنني ضبط <device(s)> لمدة تصل إلى <time period> فقط
  • actionNotAvailable : عُذْرًا، لَا يُمْكِنُنِي إِجْرَاءْ ذَلِكَ فِي الْوَقْتِ الْحَالِي. ملاحظة: تأكَّد من سمات الجهاز ومنطق الحالة الحالية في عملية التنفيذ.
  • actionUnavailableWhileRunning : <device(s)> <is/are> currently running, so I can't make any changes.
  • alreadyArmed : <device(s)> <is/are> already armed.
  • alreadyAtMax : تم ضبط <device(s)> على الحد الأقصى لدرجة الحرارة.
  • alreadyAtMin : تم ضبط <device(s)> على الحد الأدنى لدرجة الحرارة.
  • alreadyClosed : <device(s)> <is/are> already closed.
  • alreadyDisarmed : <device(s)> <is/are> already disarmed.
  • alreadyDocked : <device(s)> <is/are> already docked.
  • alreadyInState : <device(s)> <is/are> already in that state.
  • alreadyLocked : <device(s)> <is/are> already locked.
  • alreadyOff : <device(s)> <is/are> already off.
  • alreadyOn : <device(s)> <is/are> already on.
  • alreadyOpen : <device(s)> <is/are> already open.
  • alreadyPaused : تم إيقاف <device(s)> مؤقتًا من قبل.
  • alreadyStarted : <device(s)> <is/are> already started.
  • alreadyStopped : <device(s)> <is/are> already stopped.
  • alreadyUnlocked : <device(s)> <is/are> already unlocked.
  • ambiguousZoneName : عذرًا، لا يمكن لـ <device(s)> تحديد المنطقة المقصودة. يُرجى التأكّد من أنّ أسماء المناطق فريدة، ثم إعادة المحاولة.
  • amountAboveLimit : لَا يَتَّسِعُ <device(s)> لِكُلّْ هَذِهِ الْكَمِّيَّة.
  • appLaunchFailed : عذرًا، تعذّر تشغيل <app name> على <device(s)>. ملاحظة: يُرجى التحقّق من appId ومن أنّ التطبيق متوافق مع الجهاز المستهدَف.
  • armFailure : تعذّر تفعيل <الأجهزة>.
  • armLevelNeeded : أَحْتَاجْ إِلَى مَعْرِفَةِ الْمُسْتَوَى الْمَطْلُوبْ ضَبْطُهُ فِي <device(s)>. يُمْكِنُ مَثَلًا قَوْلْ "ضَبْطْ <الْأَجْهِزَة> عَلَى <مُسْتَوَى أَمَانْ مُنْخَفِضْ" أَوْ "ضَبْطْ <الْأَجْهِزَة> عَلَى <مُسْتَوَى أَمَانْ عَالٍ>"
  • authFailure : يَبْدُو أَنَّهُ لَا يُمْكِنُنِي الْوُصُولْ إِلَى <device(s)>. يُرْجَى التَّحَقُّقْ مِنَ التَّطْبِيقْ وَالتَّأَكُّدْ مِنِ اكْتِمَالِ إِعْدَادِ <device/devices>.
  • bagFull : <device(s)> <has/have> <a full bag/full bags>. Please empty <it/them> and try again.
  • belowMinimumLightEffectsDuration : هذه المدة أقل من الحد الأدنى البالغ 5 دقائق. يُرجى إعادة المحاولة.
  • belowMinimumTimerDuration : لَا يُمْكِنُنِي تَشْغِيلُ <device(s)> لِهَذِهِ الْفَتْرَة الْقَصِيرَة. يُرجى إعادة المحاولة.
  • binFull : <device(s)> <has/have> <a full bin/full bins>.
  • cancelArmingRestricted : عذرًا، لم أتمكّن من إلغاء تفعيل <device(s)>.
  • cancelTooLate : عذرًا، فات الأوان لإلغاء الطلب. يمكنك استخدام <device(s)> أو التطبيق بدلاً من ذلك.
  • channelSwitchFailed : تعذّر التبديل إلى القناة <channel name>.يُرجى إعادة المحاولة لاحقًا. ملاحظة: تحقَّق من أسماء القنوات أو أرقامها وحالة الاشتراك للمستخدم.
  • chargerIssue : عُذْرًا، يَبْدُو أَنَّ هُنَاكَ <مُشْكِلَة فِي شَاحِنْ/مَشَاكِلْ فِي شَوَاحِنْ> <device(s)>. ملاحظة: على الشريك التحقّق من بيانات القياس عن بُعد على مستوى الأجهزة وحالة البطارية.
  • commandInsertFailed : يتعذّر معالجة الأوامر لـ <device(s)>. نصيحة: يُرجى التحقّق من أداء الكتابة في قاعدة البيانات أو منطق قائمة انتظار الأوامر الداخلية.
  • deadBattery : بطارية <device(s)> فارغة.
  • degreesOutOfRange : الدرجات المطلوبة خارج النطاق المتاح لـ <device(s)>.
  • deviceAlertNeedsAssistance : هناك تنبيه نشط في <device(s)> و<need(s)> مساعدتك.
  • deviceAtExtremeTemperature : <device(s)> <is/are> at <an extreme temperature/extreme temperatures>.
  • deviceBusy : عُذْرًا، يَبْدُو أَنَّ <device(s)> مَشْغُولْ بِإِجْرَاءْ آخَرْ حَالِيًّا.
  • deviceCharging : عُذْرًا، يَبْدُو أَنَّهُ لَا يُمْكِنْ لِـ <device(s)> تَنْفِيذْ هَذَا الْإِجْرَاءْ لِأَنَّهُ (ha_shared.ItsTheyre size=$item.devices.total_device_count) قَيْدُ الشَّحْنْ.
  • deviceClogged : عُذْرًا، يَبْدُو أَنَّ <device(s)> مَسْدُودْ.
  • deviceCurrentlyDispensing : <device(s)> is already dispensing something right now.
  • deviceDoorOpen : باب <الأجهزة> مفتوح. يُرجى إغلاقه وإعادة المحاولة.
  • deviceHandleClosed : المقبض مغلق على <device(s)>. يُرجى فتحه وإعادة المحاولة.
  • deviceJammingDetected : تم حجب إشارة <device(s)>.
  • deviceLidOpen : غطاء <device(s)> مفتوح. يُرجى إغلاقه وإعادة المحاولة.
  • ‫ deviceNeedsRepair : يجب إصلاح <device(s)>. يُرجى التواصل مع وكيل الخدمة المحلي.
  • deviceNotDocked : عُذْرًا، يَبْدُو أَنَّ <device(s)> لَيْسَ عَلَى قَاعِدَةِ الْإِرْسَاءْ. يُرْجَى إِرْسَاءْ <it/them> وَالْمُحَاوَلَة مِنْ جَدِيدْ.
  • deviceNotFound : <device(s)> <is/are>n't available. يُرجى محاولة إعداد <it/them> مجددًا. ملاحظة: تأكَّد من أنّ الخلفية تحافظ دائمًا على مزامنة Home Graph. يتم استدعاء requestSync عند إضافة أجهزة أو إزالتها.
  • deviceNotMounted : عُذْرًا، يَبْدُو أَنَّهُ لَا يُمْكِنْ لِـ <device(s)> تَنْفِيذْ هَذَا الْإِجْرَاءْ لِأَنَّهُ غَيْرْ مُثَبَّتْ.
  • deviceNotReady : <device(s)> <is/are>n't ready.
  • deviceStuck : <device(s)> <is/are> stuck and needs your help.
  • deviceTampered : تم التلاعب بـ <device(s)>.
  • deviceThermalShutdown : عُذْرًا، يَبْدُو أَنَّ <device(s)> تَوَقَّفْ عَنِ التَّشْغِيلْ لِأَنَّهُ بَلَغَ دَرَجَاتْ حَرَارَة قُصْوَى.
  • directResponseOnlyUnreachable : لا <يمكن/يمكن> التحكّم في <الجهاز/الأجهزة> عن بُعد.
  • disarmFailure : تعذّر إيقاف إنذار <device(s)>.
  • discreteOnlyOpenClose : عذرًا، لا يمكن فتح <device(s)> أو إغلاقه إلا بالكامل.
  • dispenseAmountAboveLimit : لا يمكن لـ <device(s)> إخراج هذه الكمية الكبيرة.
  • dispenseAmountBelowLimit : لا يمكن لـ <device(s)> إخراج هذا المقدار القليل.
  • dispenseAmountRemainingExceeded : لا يتوفّر ما يكفي من <dispense item> في <device(s)> لتنفيذ هذا الإجراء.
  • dispenseFractionalAmountNotSupported : لا يمكن لـ <device(s)> توزيع أجزاء من <dispense item>.
  • dispenseFractionalUnitNotSupported : لا يتيح <device(s)> إخراج <dispense item> بأجزاء من وحدة القياس هذه.
  • dispenseUnitNotSupported : لا تتيح <device(s)> استخدام هذه الوحدة لـ <dispense item>.
  • doorClosedTooLong : لم يتم فتح باب <device(s)> منذ وقت طويل. يُرْجَى فَتْحُ الْبَابْ وَالتَّأَكُّدْ مِنْ وُجُودْ شَيْءٍ فِي الدَّاخِلْ ثُمَّ إِعَادَةُ الْمُحَاوَلَة.
  • emergencyHeatOn : <device(s)> <is/are> في وضع التدفئة الطارئة، لذا يجب ضبط <it/they> يدويًا.
  • faultyBattery : <device(s)> <has/have> <a faulty battery/faulty batteries>.
  • floorUnreachable : لا يمكن لـ <device(s)> الوصول إلى تلك الغرفة. يُرْجَى نَقْلُ <it/them> إِلَى الطَّابِقِ الصَّحِيحْ وَالْمُحَاوَلَة مُجَدَّدًا.
  • functionNotSupported : فِي الْوَاقِعْ، هَذِهِ الْمِيزَة غَيْرْ مُتَوَفِّرَة فِي <device(s)>. ملاحظة: تأكَّد من أنّ استجابة SYNC تعكس إمكانات الجهاز بدقة.
  • genericDispenseNotSupported : أحتاج إلى معرفة ما تريد صرفه. يُرجى إعادة المحاولة مع ذكر اسم المنتج.
  • hardError : عُذْرًا، حَصَلَ خَطَأْ وَلَا يُمْكِنُنِي التَّحَكُّمْ فِي الْجِهَازِ الْمَنْزِلِي.
  • hardError : عُذْرًا، حَصَلَ خَطَأْ وَلَا يُمْكِنُنِي التَّحَكُّمْ فِي الْجِهَازِ الْمَنْزِلِي.
  • inAutoMode : <device(s)> <is/are> currently set to auto mode. لتغيير درجة الحرارة، عليك تبديل <it/them> إلى وضع مختلف.
  • inAwayMode : <device(s)> <is/are> currently set to away mode. للتحكّم في الترموستات، عليك تبديله يدويًا إلى وضع "داخل المنزل" باستخدام تطبيق Nest على هاتف أو جهاز لوحي أو كمبيوتر.
  • inDryMode : <device(s)> <is/are> currently set to dry mode. لتغيير درجة الحرارة، عليك تبديل <it/them> إلى وضع مختلف.
  • inEcoMode : تم ضبط <device(s)> حاليًا على وضع Eco. لتغيير درجة الحرارة، عليك تبديل <it/them> إلى وضع مختلف.
  • inFanOnlyMode : <device(s)> <is/are> currently set to fan-only mode. لتغيير درجة الحرارة، عليك تبديل <it/them> إلى وضع مختلف.
  • inHeatOrCool : <device(s)> <is/are>n't in heat/cool mode.
  • inHumidifierMode : <device(s)> <is/are> currently set to humidifier mode. لتغيير درجة الحرارة، عليك تبديل <it/them> إلى وضع مختلف.
  • inOffMode : <device(s)> <is/are> currently off. To change the temperature, you'll need to switch <it/them> to a different mode.
  • inPurifierMode : <device(s)> <is/are> حاليًا في وضع تنقية الهواء. لتغيير درجة الحرارة، عليك تبديل <it/them> إلى وضع مختلف.
  • inSleepMode : <device(s)> <is/are> في وضع السكون. يُرجى إعادة المحاولة لاحقًا.
  • inSoftwareUpdate : يتم حاليًا تحديث البرنامج على <device(s)>.
  • lockFailure : تعذّر قفل <device(s)>. ملاحظة: يُرجى التحقّق من حالات الانحشار المادي أو انخفاض الطاقة أو أعطال المحرّك في أجهزة القفل.
  • lockedState : <device(s)> <is/are> currently locked.
  • lockedToRange : درجة الحرارة هذه خارج النطاق المقفل على <device(s)>.
  • lowBattery : مستوى شحن بطارية <device(s)> منخفض.
  • maxSettingReached : تم ضبط <device(s)> على أعلى مستوى.
  • maxSpeedReached : تم ضبط <device(s)> على السرعة القصوى.
  • minSettingReached : تم ضبط <device(s)> على أدنى مستوى.
  • minSpeedReached : تم ضبط <device(s)> على الحد الأدنى للسرعة.
  • monitoringServiceConnectionLost : فقد <device(s)> الاتصال بخدمة المراقبة.
  • needsAttachment : عُذْرًا، يَبْدُو أَنَّ <device(s)> تَنْقُصُهُ قِطْعَة مُلْحَقَة. يُرْجَى تَرْكِيبُهُ وَالْمُحَاوَلَة مُجَدَّدًا.
  • needsBin : عُذْرًا، يَبْدُو أَنَّ <device(s)> يَنْقُصُهُ وِعَاءْ. يُرْجَى تَرْكِيبُهُ وَالْمُحَاوَلَة مُجَدَّدًا.
  • needsPads : <device(s)> <need(s)> new pads.
  • needsSoftwareUpdate : يحتاج <device(s)> إلى تحديث للبرنامج.
  • needsWater : <device(s)> <need(s)> water.
  • networkProfileNotRecognized : عُذْرًا، لَمْ أَسْتَطِعِ التَّعَرُّفْ عَلَى "<network profile>" عَلَى <device(s)>. ملاحظة: يُرجى التأكّد من أنّ سلسلة اسم الملف الشخصي تتطابق مع الملفات الشخصية المتوافقة في استجابة SYNC.
  • networkSpeedTestInProgress : أنا بصدد اختبار <سرعة/سرعات> <الشبكة>.
  • noAvailableApp : عذرًا، يبدو أنّ <app name> غير متوفّر.
  • noAvailableChannel : عُذْرًا، وَلَكِنَّ قَنَاةْ <اسم القناة> غَيْرْ مُتَوَفِّرَة عَلَى مَا يَبْدُو.
  • noChannelSubscription : عُذْرًا، لَا يَتَوَفَّرْ لَدَيْنَا اشْتِرَاكْ حَالِيًّا فِي قَنَاةْ <channel name>.
  • noTimerExists : عُذْرًا، لَمْ يَتِمّْ ضَبْطْ أَيّْ مُوَقِّتَاتْ عَلَى <device(s)> عَلَى مَا يَبْدُو.
  • notSupported : عذرًا، هذا الوضع غير متاح على <device(s)>.
  • obstructionDetected : رصدت<الأجهزة> عائقًا.
  • offline , deviceOffline : عذرًا، يبدو أنّ <device(s)> غير متاح حاليًا.
  • onRequiresMode : يُرجى تحديد الوضع المطلوب تفعيله.
  • passphraseIncorrect : عذرًا، يبدو أنّ رقم التعريف الشخصي غير صحيح.
  • percentOutOfRange : عذرًا، لا يمكنني ضبط <device(s)> على <percent>.
  • pinIncorrect : (passphraseIncorrect)
  • rainDetected : لَمْ أَفْتَحْ <device(s)> بِسَبَبْ رَصْدْ أَمْطَارْ.
  • rangeTooClose : درجتا الحرارة قريبتان جدًا من بعضهما لضبط نطاق التدفئة والتبريد في <device(s)>. يُرجى اختيار درجتَي حرارة أبعد عن بعضهما.
  • relinkRequired : عُذْرًا، حَدَثَ خَطَأْ فِي الْحِسَابْ عَلَى مَا يَبْدُو. يُرجى استخدام Google Home أو تطبيق "مساعد Google" لإعادة ربط <device(s)>. ملاحظة: يُرجى التأكّد من أنّ الخادم يعرض هذا الرمز عندما يكون الرمز المميز لإعادة التحميل غير صالح بشكل دائم.
  • remoteSetDisabled :
    • المَعلمة الاختيارية errorCodeReason
    • currentlyArmed - عُذْرًا، وَلَكِنْ بِمَا أَنَّ جِهَازَ الْإِنْذَارْ فِي نِظَامِ الْأَمَانْ مُفَعَّلْ حَالِيًّا، يَجِبُ اسْتِخْدَامُ <device(s)> أَوِ التَّطْبِيقْ لِإِجْرَاءْ أَيّْ تَغْيِيرَاتْ.
    • remoteUnlockNotAllowed - عذرًا، لا يمكنني فتح قفل <device(s)> عن بُعد.
    • remoteControlOff - هذا الإجراء غير مفعَّل حاليًا. يُرْجَى تَفْعِيلْ وِحْدَةِ التَّحَكُّمْ عَنْ بُعْدْ فِي <device(s)> وَالْمُحَاوَلَة مِنْ جَدِيدْ.
    • childSafetyModeActive - هذا الإجراء غير متاح على <device(s)> لأنّ وضع سلامة الأطفال مفعَّل.
  • roomsOnDifferentFloors : لَا يُمْكِنْ لِـ <device(s)> الْوُصُولْ إِلَى تِلْكَ الْغُرَفْ لِأَنَّهَا تَقَعُ فِي طَوَابِقْ مُخْتَلِفَة.
  • safetyShutOff : <device(s)> <is/are> في وضع الإيقاف الآمن، لذا يجب ضبط <it/they> يدويًا.
  • sceneCannotBeApplied : عذرًا، لا يمكن تطبيق المشهد على <device(s)>. ملاحظة: يُرجى التحقّق من الحالة الداخلية لمَشاهد المستخدم على السحابة الإلكترونية الخاصة بالشريك.
  • securityRestriction : <device(s)> <has/have> a security restriction.
  • softwareUpdateNotAvailable : عُذْرًا، لَا يَتَوَفَّرْ أَيّْ تَحْدِيثْ لِلْبَرَامِجْ عَلَى <device(s)>.
  • startRequiresTime : لِإِجْرَاءْ ذَلِكْ، يَجِبْ تَحْدِيدْ مُدَّةِ التَّشْغِيلِ الْمَطْلُوبَة لِـ <device(s)>.
  • stillCoolingDown : لا يزال <device(s)> في مرحلة التبريد.
  • stillWarmingUp : <device(s)> <is/are> still warming up.
  • streamUnavailable : عذرًا، يبدو أنّ البث غير متاح حاليًا من <device(s)>.
  • streamUnplayable : عذرًا، لا يمكنني تشغيل البث من <device(s)> في الوقت الحالي. ملاحظة: يُرجى التحقّق من إشارات WebRTC/HLS والتأكّد من صلاحية عنوان URL للبث.
  • tankEmpty : <device(s)> <has/have> <an empty tank/empty tanks>. Please fill <it/them> and try again.
  • targetAlreadyReached : عذرًا، يبدو أنّ درجة الحرارة الحالية هي نفسها التي طلبتها.
  • timerValueOutOfRange : لا يمكن ضبط <device(s)> لهذه المدة الزمنية.
  • tooManyFailedAttempts : عذرًا، تم إجراء محاولات كثيرة غير ناجحة. يُرجى الانتقال إلى التطبيق على جهازك لإكمال هذا الإجراء.
  • transientError : عفوًا، حدثت مشكلة أثناء التحكّم في <device(s)>. يُرجى إعادة المحاولة. ملاحظة: تظهر هذه الأخطاء عادةً على شكل انقطاع في الاتصال بجهاز أو خدمة. وأيضًا في حال تعذّر فتح اتصالات جديدة بالخادم.
  • turnedOff , deviceTurnedOff : <device(s)> <is/are> off right now.
  • unableToLocateDevice : لم أتمكّن من تحديد موقع <device(s)>. نصيحة: يُرجى التحقّق من إمكانية اتصال الجهاز بالشبكة المحلية (Wi-Fi أو بلوتوث).
  • unknownFoodPreset : هذا الإعداد المسبق الخاص بالطعام غير متوفّر على <device(s)>.
  • unlockFailure : تعذّر فتح قفل <device(s)>. ملاحظة: تحقَّق من حالات تعطُّل الأجهزة أو انخفاض مستوى شحن البطارية أو إدخال أرقام تعريف شخصية غير صالحة.
  • unpausableState : لَا يُمْكِنْ حَالِيًّا إِيقَافْ <device(s)> مُؤَقَّتًا.
  • userCancelled : ok
  • valueOutOfRange : لا يمكن ضبط <الأجهزة> على درجة الحرارة هذه.

إعداد تقارير عن حالة الاتصال بالإنترنت وبلا إنترنت

عندما يكون الجهاز غير متصل بالإنترنت، عليك إبلاغ <code{"online": code="" dir="ltr" false}<="" translate="no"> عن حالة الإبلاغ في غضون خمس دقائق من سلوك الجهاز. وعلى العكس، عندما يعود الجهاز إلى حالة الاتصال بالإنترنت، عليك إبلاغ <code{"online": code="" dir="ltr" translate="no" true}<=""> إلى Report State في غضون خمس دقائق من سلوك الجهاز. عندما يعود الجهاز إلى الاتصال بالإنترنت، على الشريك الإبلاغ عن جميع حالات الجهاز الحالية باستخدام واجهة برمجة التطبيقات reportStateAndNotification. يوضّح هذا المثال أنّ نوع الجهاز light متصل بالإنترنت، ويُبلغ عن جميع حالات الجهاز الحالية.
"requestId": "test-request-id",
  "agentUserId": "agent-user-1",
    "payload":{
      "devices": {
        "states": {
          "device-id-1": {
            "brightness": 65,
            "on": true,
            "online": true
          }
          "notifications": {},
        }
      }
    }

الاستثناءات

يجب أن تعرض استثناءً عندما تكون هناك مشكلة أو تنبيه مرتبط بأمر. قد ينجح الأمر أو يفشل.

إذا تم تنفيذ الأمر بنجاح (الحالة = "SUCCESS")، يجب الإبلاغ عن الاستثناءات باستخدام السمة StatusReport (للأجهزة غير المستهدَفة)، أو من خلال عرض exceptionCode مناسب (لجهاز الاختبار).

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

إذا تعذّر تنفيذ الأمر بسبب استثناءات، يجب أن تكون الحالة "EXCEPTIONS"، ويجب الإبلاغ عن الاستثناءات باستخدام السمة StatusReport.

استثناء غير مانع (نجاح) بشأن جهاز الاختبار

في ما يلي مثال على قفل الباب:

مستوى شحن بطارية قفل الباب الأمامي منخفض. سأقفل الباب الأمامي.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["device-id-1"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true,
        "isLocked": true,
        "isJammed": false,
        "exceptionCode": "lowBattery"
      }
    }]
  }
}

استثناء غير محظور (SUCCESS) بشأن جهاز آخر يستخدم StatusReport

هذا المثال مخصّص لتفعيل جهاز الإنذار في نظام الأمان: حسنًا، سأفعّل جهاز الإنذار في نظام الأمان. النافذة الأمامية مفتوحة.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["device-id-1"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true,
        "isArmed": true,
        "currentArmLevel": "L2",
        "currentStatusReport": [{
          "blocking": false,
          "deviceTarget": "sensor_id1",
          "priority": 0,
          "statusCode": "deviceOpen"
        }]
      }
    }]
  }
}

استثناء حظر بشأن جهاز آخر يستخدم StatusReport

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "devices": {
      "device-id-1": {
        "on": true,
        "online": true,
        "status": "EXCEPTIONS",
        "currentStatusReport": [{
            "blocking": true,
            "deviceTarget": "device-id-1",
            "priority": 0,
            "statusCode": "lowBattery"
          },
          {
            "blocking": true,
            "deviceTarget": "front_window_id",
            "priority": 1,
            "statusCode": "deviceOpen"
          },
          {
            "blocking": true,
            "deviceTarget": "back_window_id",
            "priority": 1,
            "statusCode": "deviceOpen"
          }
        ]
      }
    }
  }
}

قائمة الاستثناءات

ستؤدي الاستثناءات التالية إلى إنشاء ميزة "تحويل النص إلى كلام" المرتبطة على الجهاز.

  • bagFull : <device(s)> <has/have> <a full bag/full bags>. Please empty <it/them> and try again.
  • binFull : <device(s)> <has/have> <a full bin/full bins>.
  • carbonMonoxideDetected : تم رصد أول أكسيد الكربون في <house name>.
  • deviceAtExtremeTemperature : <device(s)> <is/are> at <an extreme temperature/extreme temperatures>.
  • deviceJammingDetected : تم حجب إشارة <device(s)>.
  • deviceMoved : تم نقل <device(s)>.
  • deviceOpen : <device(s)> <is/are> open.
  • deviceTampered : تم التلاعب بـ <device(s)>.
  • deviceUnplugged : تم فصل <device(s)>.
  • floorUnreachable : لا يمكن لـ <device(s)> الوصول إلى تلك الغرفة. يُرْجَى نَقْلُ <it/them> إِلَى الطَّابِقِ الصَّحِيحْ وَالْمُحَاوَلَة مُجَدَّدًا.
  • hardwareFailure : <device(s)> <has/have> a hardware problem.
  • inSoftwareUpdate : يتم حاليًا تحديث البرنامج على <device(s)>.
  • isBypassed : <device(s)> <is/are> currently bypassed.
  • lowBattery : مستوى شحن بطارية <device(s)> منخفض.
  • motionDetected : يرصد <device(s)> حركة.
  • needsPads : <device(s)> <need(s)> new pads.
  • needsSoftwareUpdate : يحتاج <device(s)> إلى تحديث للبرنامج.
  • needsWater : <device(s)> <need(s)> water.
  • networkJammingDetected : الاتصال بالشبكة المنزلية بـ <الأجهزة> لا يعمل بشكل صحيح.
  • noIssuesReported : لم يتم الإبلاغ عن أي مشاكل في<device(s)>.
  • roomsOnDifferentFloors : لَا يُمْكِنْ لِـ <device(s)> الْوُصُولْ إِلَى تِلْكَ الْغُرَفْ لِأَنَّهَا تَقَعُ فِي طَوَابِقْ مُخْتَلِفَة.
  • runCycleFinished : انتهى تشغيل <device(s)>.
  • securityRestriction : <device(s)> <has/have> a security restriction.
  • smokeDetected : تم رصد دخان في <house name>.
  • tankEmpty : <device(s)> <has/have> <an empty tank/empty tanks>. Please fill <it/them> and try again.
  • usingCellularBackup : يستخدم <device(s)> الدعم الخلوي.
  • waterLeakDetected : <device(s)> <detect(s)> a water leak.
</code{"online":></code{"online":>