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

يسرد هذا المستند الأخطاء والاستثناءات المتوافقة رسميًا مع أجهزة المنزل الذكي. يُرجى استخدام رموز الأخطاء والاستثناءات المحدّدة في ردود الأهداف أو في الإشعارات إذا كنت قد نفّذتها، وذلك لكي يبلّغ "مساعد 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 : تمّت إيقاف <الأجهزة> مؤقتًا من قبل.
  • alreadyStarted : تم تشغيل<device(s)> <is/are> من قبل.
  • alreadyStopped : تمّ إيقاف<device(s)> <is/are> من قبل.
  • alreadyUnlocked : تمت إزالة قفل<device(s)> <is/are> من قبل.
  • ambiguousZoneName : عذرًا، لا يمكن لـ <device(s)> التعرّف على المنطقة التي تقصدها. يُرجى التأكّد من أنّ المناطق تحمل أسماء فريدة، ثم إعادة المحاولة.
  • amountAboveLimit : هذا المبلغ يتجاوز الحدّ الذي يمكن أن يستوعبه <device(s)>.
  • appLaunchFailed : تعذّر تشغيل <اسم التطبيق> على <الأجهزة>. ملاحظة: تحقَّق من رقم تعريف التطبيق ومن أنّ التطبيق متوافق مع الجهاز المستهدف.
  • 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 : عذرًا، لَقَدْ فَاتَ الْأَوَانْ عَلَى إِلْغَاءِ الْإِجْرَاءْ. استخدِم <الأجهزة> أو التطبيق بدلاً من ذلك.
  • 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 : الأجهزة غير متوفّرة. أَقْتَرِحْ إِعْدَاد <هذا الجهاز/هذه الأجهزة> مُجَدَّدًا. ملاحظة: تأكَّد من أنّ الخلفية تحافظ دائمًا على مزامنة قاعدة بيانات Home Graph. استدعِ requestSync كلما تمت إضافة أجهزة أو إزالتها.
  • 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> في خاصية التدفئة الطارئة، لذا يجب تعديلها يدويًا.
  • faultyBattery : <device(s)> <has/have> <a faulty battery/faulty batteries>.
  • floorUnreachable : يتعذّر على <الأجهزة> الوصول إلى تلك الغرفة. يُرجى نقل <it/them> إلى الطابق الصحيح والمحاولة مجددًا.
  • functionNotSupported : في الواقع، لا يتيح <device(s)> هذه الوظيفة. ملاحظة: تأكَّد من أنّ استجابة SYNC تعكس إمكانات الجهاز بدقة.
  • genericDispenseNotSupported : أَحْتَاجُ إِلَى مَعْرِفَةْ مَا الْمَطْلُوبْ إِخْرَاجُهْ. يُرجى إعادة المحاولة مع تحديد اسم المادة.
  • hardError : عُذْرًا، حَدَثَ خَطَأْ وَلَا يُمْكِنُنِي التَّحَكُّمْ فِي الْجِهَازِ الْمَنْزِلِي.
  • hardError : عُذْرًا، حَدَثَ خَطَأْ وَلَا يُمْكِنُنِي التَّحَكُّمْ فِي الْجِهَازِ الْمَنْزِلِي.
  • inAutoMode : تم حاليًا ضبط <device(s)> على الوضع التلقائي. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • inAwayMode : تم حاليًا ضبط<الأجهزة> على وضع "خارج المنزل". لِلتَّحَكُّمْ فِي التِّرْمُوسْتَاتْ، يُرْجَى ضَبْطُهُ يَدَوِيًّا علَى وَضْعْ دَاخِلِ الْمَنْزِلْ بِاسْتِخْدَامْ تَطْبِيقْ Nest عَلَى الْهَاتِفْ أَوِ الْجِهَازِ اللَّوْحِي أَوِ الْكُمْبْيُوتِرْ.
  • inDryMode : <device(s)> <is/are> currently set to dry mode. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • inEcoMode : تم ضبط <الأجهزة> حاليًا على وضع توفير الطاقة. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • inFanOnlyMode : تم حاليًا ضبط <الأجهزة> على وضع المروحة فقط. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • 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 : تم حاليًا ضبط <device(s)> على وضع التنقية. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • inSleepMode : <device(s)> <is/are> in sleep mode. يُرجى إعادة المحاولة لاحقًا.
  • inSoftwareUpdate : <device(s)> <is/are> حاليًا في عملية تحديث للبرنامج.
  • lockFailure : تعذّر قفل <device(s)>. ملاحظة: تحقَّق من أي أعطال ميكانيكية أو انخفاض في الطاقة أو أعطال في المحرّك في جهاز القفل.
  • lockedState : <device(s)> <is/are> currently locked.
  • lockedToRange : هَذِهِ الْحَرَارَة خَارِجْ نِطَاقْ دَرَجَاتِ الْحَرَارَة الَّتِي يُمْكِنُ ضَبْطُهَا فِي <device(s)>.
  • lowBattery : <device(s)> <has/have> low battery.
  • maxSettingReached : تمّ ضبط <الأجهزة> على أعلى إعداد.
  • maxSpeedReached : تم ضبط <الأجهزة> على الحد الأقصى للسرعة.
  • minSettingReached : تم ضبط <الأجهزة> على أدنى إعداد.
  • 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)>. ملاحظة: تأكَّد من أنّ سلسلة اسم الملف الشخصي تطابق الملفات الشخصية المتوافقة في رد SYNC.
  • networkSpeedTestInProgress : أنا أختبر حاليًا <network> <speed/speeds>.
  • noAvailableApp : يؤسفنا إخبارك بأنّ تطبيق <اسم التطبيق> غير متاح.
  • noAvailableChannel : عُذْرًا، وَلَكِنَّ قَنَاةْ <channel name> غَيْرْ مُتَوَفِّرَة عَلَى مَا يَبْدُو.
  • noChannelSubscription : عُذْرًا، لَا يَتَوَفَّرْ لَدَيْنَا اشْتِرَاكْ حَالِيًّا فِي قَنَاة <channel name>.
  • noTimerExists : عُذْرًا، لَمْ يَتِمّْ ضَبْطْ أَيّْ مُوَقِّتَاتْ عَلَى <device(s)> عَلَى مَا يَبْدُو.
  • notSupported : عذرًا، هذا الوضع غير متاح على <device(s)>.
  • obstructionDetected : رصدت<device(s)> عائقًا.
  • offline , deviceOffline : عُذْرًا، يَبْدُو أَنَّ <device(s)> <is/are>n't غَيْرْ مُتَوَفِّرْ فِي الْوَقْتِ الْحَالِي.
  • onRequiresMode : يُرجى تحديد الوضع الذي تريد تفعيله.
  • passphraseIncorrect : عفوًا، يبدو أنّ رقم التعريف الشخصي غير صحيح.
  • percentOutOfRange : عذرًا، لا يمكنني ضبط <device(s)> على <percent>.
  • pinIncorrect : (passphraseIncorrect)
  • rainDetected : لم أفتح <الأجهزة> لأنّه تم رصد تساقط أمطار.
  • rangeTooClose : دَرَجَاتُ الْحَرَارَة هَذِهِ مُتَقَارِبَة جِدًّا وَلَا يُمْكِنُ اسْتِخْدَامُهَا لِإِعْدَادْ نِطَاقِ التَّدْفِئَة وَالتَّبْرِيدْ فِي <device(s)>. يُرْجَى اخْتِيَارْ دَرَجَاتْ حَرَارَة أَكْثَرْ تَبَاعُدًا.
  • relinkRequired : عُذْرًا، حَدَثَ خَطَأْ فِي الْحِسَابْ عَلَى مَا يَبْدُو. يُرجى استخدام Google Home أو تطبيق المساعد لإعادة ربط <device(s)>. ملاحظة: تأكَّد من أنّ الخادم يعرض هذا الرمز عندما يكون الرمز المميز لإعادة التحميل غير صالح بشكل دائم.
  • remoteSetDisabled :
    • المَعلمة الاختيارية errorCodeReason
    • currentlyArmed - عُذْرًا، بِمَا أَنَّ جِهَازَ الْإِنْذَارْ فِي نِظَامِ الْأَمَانْ مُفَعَّلْ حَالِيًّا، يَجِبْ اسْتِخْدَامُ <device(s)> أَوِ التَّطْبِيقْ لِإِجْرَاءْ أَيّْ تَغْيِيرَاتْ.
    • remoteUnlockNotAllowed - عذرًا، لا يمكنني فتح قفل <device(s)> عن بُعد.
    • remoteControlOff - هذا الإجراء متوقّف حاليًا. يُرجى تفعيل جهاز التحكّم عن بُعد على <device(s)> وإعادة المحاولة.
    • childSafetyModeActive - هذا الإجراء غير متاح على <الأجهزة> عندما يكون وضع سلامة الأطفال مفعّلاً.
  • roomsOnDifferentFloors : لا يمكن لـ <device(s)> الوصول إلى تلك الغرف لأنّها تقع في طوابق مختلفة.
  • safetyShutOff : <device(s)> <is/are> in Safety Shut-Off Mode, so <it/they>'ll have to be adjusted by hand.
  • sceneCannotBeApplied : لا يمكن تطبيق المشهد على <device(s)>. ملاحظة: تحقَّق من الحالة الداخلية لمشاهد المستخدم على السحابة الإلكترونية الخاصة بالشريك.
  • 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)> فِي الْوَقْتِ الْحَالِي. ملاحظة: تحقَّق من إشارات 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/Bluetooth).
  • 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 : يتعذّر على <الأجهزة> الوصول إلى تلك الغرفة. يُرجى نقل <it/them> إلى الطابق الصحيح والمحاولة مجددًا.
  • hardwareFailure : <device(s)> <has/have> a hardware problem.
  • inSoftwareUpdate : <device(s)> <is/are> حاليًا في عملية تحديث للبرنامج.
  • 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 : يشير هذا الخطأ إلى أنّ الاتصال بين الشبكة المنزلية و<الأجهزة> لا يعمل بشكل صحيح.
  • 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":>