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

يسرد هذا المستند الأخطاء والاستثناءات المتوافقة رسميًا مع أجهزة المنزل الذكي. يُرجى استخدام رموز الأخطاء والاستثناءات المحدّدة في ردود الأهداف أو في الإشعارات إذا كنت قد نفّذتها، وذلك لكي يبلّغ "مساعد 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"
  }
}

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

ردّ QUERY

يوضّح مقتطف 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"
            }
          }
        }
      }
    }
  }
}

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

ستؤدي الأخطاء التالية إلى إنتاج النص المرتبط بها على الجهاز.

  • 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 : تمّ ضبط <الأجهزة> على درجة الحرارة القصوى.
  • alreadyAtMin : تمّ ضبط <device(s)> على درجة الحرارة الأدنى.
  • alreadyClosed : تم إغلاق<device(s)> <is/are> من قبل.
  • alreadyDisarmed : تمّ إيقاف <device(s)> مسبقًا.
  • 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> من قبل.
  • alreadyStopped : تمّ إيقاف<device(s)> <is/are> من قبل.
  • alreadyUnlocked : تمت إزالة قفل <device(s)> من قبل.
  • ambiguousZoneName : عذرًا، لا يمكن لـ <device(s)> التعرّف على المنطقة التي تقصدها. يُرجى التأكّد من أنّ المناطق تحمل أسماء فريدة وإعادة المحاولة.
  • amountAboveLimit : لَا يَتَّسِعُ <device(s)> لِكُلّْ هَذِهِ الْكَمِّيَّة.
  • appLaunchFailed : تعذّر تشغيل <اسم التطبيق> على <الأجهزة>.
  • armFailure : تعذّر تفعيل جهاز الإنذار في <device(s)>.
  • 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 : عُذْرًا، لَقَدْ فَاتَ الْأَوَانْ عَلَى إِلْغَاءِ الْإِجْرَاءْ. استخدِم <الأجهزة> أو التطبيق بدلاً من ذلك.
  • channelSwitchFailed : تعذّر التبديل إلى القناة <channel name>. يُرجى إعادة المحاولة لاحقًا.
  • chargerIssue : عُذْرًا، يبدو أنّ <device(s)> <has/have> <a charger issue/charger issues>.
  • commandInsertFailed : تعذّر تنفيذ الطلبات على <device(s)>.
  • deadBattery : <device(s)> <has/have> <a dead battery/dead batteries>.
  • 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)> تَنْفِيذْ هَذَا الْإِجْرَاءْ لِأَنَّهُ قَيْدُ الشَّحْنْ.
  • deviceClogged : عُذْرًا، يَبْدُو أَنَّ <device(s)> مَسْدُودْ.
  • deviceCurrentlyDispensing : سَبَقَ وَبَدَأَ الْجِهَازُ<device(s)> بِإِخْرَاجْ بَعْضِ الْكَمِّيَّاتْ.
  • deviceDoorOpen : باب <device(s)> مفتوح. يُرجى إغلاقه والمحاولة مرة أخرى.
  • deviceHandleClosed : تم إغلاق المقبض على <device(s)>. يُرجى فتحه وإعادة المحاولة.
  • deviceJammingDetected : تم التشويش على <الأجهزة>.
  • deviceLidOpen : غطاء <device(s)> مفتوح. يُرجى إغلاقه والمحاولة مرة أخرى.
  • deviceNeedsRepair : يجب إصلاح<device(s)> <need(s)>. يُرجى التواصل مع وكيل الخدمة المحلي.
  • deviceNotDocked : عُذْرًا، يَبْدُو أَنَّ <device(s)> <isn't/aren't> على قاعدة الإرساء. يُرجى إرساء <it/them> والمحاولة من جديد.
  • deviceNotFound : الأجهزة غير متوفّرة. أَقْتَرِحْ إِعْدَاد <هذا الجهاز/هذه الأجهزة> مُجَدَّدًا.
  • deviceNotMounted : عُذْرًا، يَبْدُو أَنَّه لَا يُمْكِنْ لـ <device(s)> تَنْفِيذْ هَذَا الْإِجْرَاءْ لِأَنَّ <it/they> <is/are>n't مُثَبَّتْ.
  • deviceNotReady : <device(s)> <is/are>n't ready.
  • deviceStuck : <device(s)> <is/are> stuck and needs your help.
  • deviceTampered : تم التلاعب <بالأجهزة>.
  • deviceThermalShutdown : عُذْرًا، يَبْدُو أَنَّ <device(s)> تَوَقَّفَ عَنِ الْعَمَلْ بِسَبَبْ بُلُوغِ الْحَرَارَة دَرَجَاتٍ قُصْوَى.
  • directResponseOnlyUnreachable : <device(s)> <doesn't/don't> support remote control.
  • disarmFailure : تعذّر إيقاف التنبيه في <device(s)>.
  • discreteOnlyOpenClose : عُذْرًا، يُمْكِنُنِي فَقَطْ فَتْحْ <device(s)> أَوْ إِغَلَاقُهُمَا كُلِّيًّا.
  • dispenseAmountAboveLimit : لا يمكن لـ <device(s)> إخراج هذه الكمية الكبيرة.
  • dispenseAmountBelowLimit : لَا يمكن لـ <device(s)> إخراج هذا المقدار القليل.
  • dispenseAmountRemainingExceeded : لا يتوفّر في <device(s)> ما يكفي من <dispense item> لتنفيذ هذا الطلب.
  • dispenseFractionalAmountNotSupported : لا يمكن لـ <device(s)> صرف كسور من <dispense item>.
  • dispenseFractionalUnitNotSupported : لا يتيح <device(s)> إخراج <dispense item> بأجزاء من وحدة القياس هذه.
  • dispenseUnitNotSupported : لا يتيح <device(s)> استخدام هذه الوحدة مع <dispense item>.
  • doorClosedTooLong : لَمْ يَتِمَّ فَتْحُ بَابِ <device(s)> مُنْذُ وَقْتٍ طَوِيلْ. يُرجى فتح الباب والتأكّد من وجود شيء في الداخل، ثم إعادة المحاولة.
  • emergencyHeatOn : <device(s)> <is/are> in Emergency Heat Mode, so <it/they>'ll have to be adjusted by hand.
  • faultyBattery : <device(s)> <has/have> <a faulty battery/faulty batteries>.
  • floorUnreachable : يتعذّر على <device(s)> الوصول إلى تلك الغرفة. يُرجى نقل <it/them> إلى الطابق الصحيح والمحاولة مجددًا.
  • functionNotSupported : في الواقع، <device(s)> <doesn't/don't> تتيح هذه الوظيفة.
  • genericDispenseNotSupported : أحتاج إلى معرفة ما تريد إخراجه. يُرجى إعادة المحاولة مع تحديد اسم المنتج.
  • hardError : عُذْرًا، حَدَثَ خَطَأْ وَلَا يُمْكِنُنِي التَّحَكُّمْ فِي الْجِهَازِ الْمَنْزِلِي.
  • hardError : عُذْرًا، حَدَثَ خَطَأْ وَلَا يُمْكِنُنِي التَّحَكُّمْ فِي الْجِهَازِ الْمَنْزِلِي.
  • inAutoMode : تم حاليًا ضبط <device(s)> على الوضع التلقائي. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • inAwayMode : تم حاليًا ضبط<الأجهزة> على وضع "خارج المنزل". لِلتَّحَكُّمْ فِي التِّرْمُوسْتَاتْ، يُرْجَى ضَبْطُهُ يَدَوِيًّا علَى وَضْعْ دَاخِلِ الْمَنْزِلْ بِاسْتِخْدَامْ تَطْبِيقْ Nest عَلَى الْهَاتِفْ أَوِ الْجِهَازِ اللَّوْحِي أَوِ الْكُمْبْيُوتِرْ.
  • inDryMode : تم حاليًا ضبط <device(s)> على وضع التجفيف. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • inEcoMode : تم حاليًا ضبط <الأجهزة> على وضع توفير الطاقة. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • inFanOnlyMode : تم حاليًا ضبط <device(s)> على وضع المروحة فقط. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • inHeatOrCool : <device(s)> <is/are>n't in heat/cool mode.
  • inHumidifierMode : تم ضبط <device(s)> حاليًا على وضع ترطيب الهواء. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • inOffMode : <device(s)> <is/are> currently off. To change the temperature, you'll need to switch <it/them> to a different mode.
  • inPurifierMode : يتم حاليًا ضبط <الأجهزة> على وضع تنقية الهواء. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • inSleepMode : <device(s)> <is/are> in sleep mode. يُرجى إعادة المحاولة لاحقًا.
  • inSoftwareUpdate : <device(s)> <is/are> currently in a software update.
  • lockFailure : تعذّر قفل <الأجهزة>.
  • lockedState : <device(s)> <is/are> currently locked.
  • lockedToRange : هَذِهِ الْحَرَارَة خَارِجْ نِطَاقْ دَرَجَاتِ الْحَرَارَة الَّتِي يُمْكِنُ ضَبْطُهَا فِي <device(s)>.
  • lowBattery : <device(s)> <has/have> low battery.
  • maxSettingReached : تمّ ضبط <الأجهزة> على أعلى إعداد.
  • maxSpeedReached : تم ضبط <الأجهزة> على الحد الأقصى للسرعة.
  • minSettingReached : تم ضبط<device(s)> <is/are> على أدنى مستوى.
  • minSpeedReached : تم ضبط<device(s)> <is/are> على الحد الأدنى للسرعة.
  • monitoringServiceConnectionLost : فقد <device(s)> الاتصال بخدمة المراقبة.
  • needsAttachment : عُذْرًا، يَبْدُو أَنَّ <device(s)> <is/are> تَنْقُصُهَا قِطْعَة مُلْحَقَة ضَرُورِيَّة. يُرجى استبداله وإعادة المحاولة.
  • needsBin : عُذْرًا، يَبْدُو أَنَّ <device(s)> <is/are> يَنْقُصُهُ وِعَاءْ. يُرجى استبداله وإعادة المحاولة.
  • needsPads : <device(s)> <need(s)> new pads.
  • needsSoftwareUpdate : <device(s)> <need(s)> a software update.
  • needsWater : <device(s)> <need(s)> water.
  • networkProfileNotRecognized : عذرًا، لم أستطع التعرّف على "<network profile>" على <device(s)>.
  • networkSpeedTestInProgress : أنا أختبر حاليًا <network> <speed/speeds>.
  • noAvailableApp : عفوًا، يبدو أنّ تطبيق <اسم التطبيق> غير متاح.
  • noAvailableChannel : عُذْرًا، وَلَكِنَّ قَنَاةْ <channel name> غَيْرْ مُتَوَفِّرَة عَلَى مَا يَبْدُو.
  • noChannelSubscription : عُذْرًا، لَا يَتَوَفَّرْ لَدَيْنَا اشْتِرَاكْ حَالِيًّا فِي قَنَاةْ <اسم القناة>.
  • noTimerExists : عذرًا، لَمْ يَتِمّْ ضَبْطْ أَيّْ مُوَقِّتَاتْ عَلَى <device(s)> عَلَى مَا يَبْدُو.
  • notSupported : عذرًا، هذا الوضع غير متاح على <device(s)>.
  • obstructionDetected : رصدت<device(s)> عائقًا.
  • offline , deviceOffline : عذرًا، يبدو أنّ <device(s)> <is/are> غير متوفرة حاليًا.
  • 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> in Safety Shut-Off Mode, so <it/they>'ll have to be adjusted by hand.
  • sceneCannotBeApplied : لا يمكن تطبيق المشهد على <الأجهزة>.
  • securityRestriction : <device(s)> <has/have> a security restriction.
  • softwareUpdateNotAvailable : عذرًا، لا يتوفّر تحديث للبرامج على <device(s)>.
  • startRequiresTime : لِإِجْرَاءْ ذَلِكْ، يَجِبْ تَحْدِيدْ مُدَّةِ التَّشْغِيلِ الْمَطْلُوبَة لـ <device(s)>.
  • stillCoolingDown : لا يزال<device(s)> <is/are> في مرحلة التبريد.
  • stillWarmingUp : لا يزال <device(s)> في مرحلة الإحماء.
  • streamUnavailable : عُذْرًا، لَا يُمْكِنُ بَثّْ تَسْجِيلَاتِ <device(s)> فِي الْوَقْتِ الْحَالِي عَلَى مَا يَبْدُو.
  • streamUnplayable : عُذْرًا، لَا يُمْكِنُنِي بَثّْ تَسْجِيلَاتِ <device(s)> فِي الْوَقْتِ الْحَالِي.
  • 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)>.
  • unknownFoodPreset : هَذَا الْإِعْدَادُ الْمُسْبَقُ الْخَاصّْ بِالطَّعَامْ غَيْرْ مُتَوَفِّرْ عَلَى <device(s)>.
  • unlockFailure : تعذّر فتح قفل <device(s)>.
  • unpausableState : لا يمكن حاليًا إيقاف <device(s)> مؤقتًا.
  • userCancelled : ok
  • valueOutOfRange : لا يمكن ضبط <device(s)> على درجة الحرارة هذه.

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

عندما يكون الجهاز غير متصل بالإنترنت، عليك إرسال <code{"online": code="" dir="ltr" false}<="" translate="no"> إلى Report State في غضون خمس دقائق من سلوك الجهاز. في المقابل، عندما يعود الجهاز إلى حالة الاتصال بالإنترنت، عليك إرسال <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.

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

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

مستوى شحن البطارية في قفل الباب الأمامي منخفض. يَتِمُّ الْآنَ إِقْفَالُ الْبَابِ الْأَمَامِي.

{
  "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 : تم رصد أول أكسيد الكربون في <اسم المنزل>.
  • deviceAtExtremeTemperature : <device(s)> <is/are> at <an extreme temperature/extreme temperatures>.
  • deviceJammingDetected : تم التشويش على <الأجهزة>.
  • deviceMoved : تم نقل <الأجهزة>.
  • deviceOpen : <device(s)> <is/are> open.
  • deviceTampered : تم التلاعب <بالأجهزة>.
  • deviceUnplugged : تم فصل <device(s)>.
  • floorUnreachable : يتعذّر على <device(s)> الوصول إلى تلك الغرفة. يُرجى نقل <it/them> إلى الطابق الصحيح والمحاولة مجددًا.
  • hardwareFailure : <device(s)> <has/have> a hardware problem.
  • inSoftwareUpdate : <device(s)> <is/are> currently in a software update.
  • isBypassed : تم حاليًا تجاوز <device(s)>.
  • lowBattery : <device(s)> <has/have> low battery.
  • motionDetected : <device(s)> <detect(s)> motion.
  • needsPads : <device(s)> <need(s)> new pads.
  • needsSoftwareUpdate : <device(s)> <need(s)> a software update.
  • needsWater : <device(s)> <need(s)> water.
  • networkJammingDetected : يشير هذا الخطأ إلى أنّ الاتصال بين الشبكة المنزلية و<device(s)> لا يعمل بشكل صحيح.
  • noIssuesReported : لم يبلغ<device(s)> عن أي مشاكل.
  • roomsOnDifferentFloors : لا يمكن لـ <device(s)> الوصول إلى تلك الغرف لأنّها تقع في طوابق مختلفة.
  • runCycleFinished : تم الانتهاء من تشغيل <device(s)>.
  • securityRestriction : <device(s)> <has/have> a security restriction.
  • smokeDetected : تم رصد دخان في <اسم المنزل>.
  • tankEmpty : <device(s)> <has/have> <an empty tank/empty tanks>. Please fill <it/them> and try again.
  • usingCellularBackup : <device(s)> <is/are> using cellular backup.
  • waterLeakDetected : <device(s)> <detect(s)> a water leak.‎
</code{"online":></code{"online":>