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

يسرد هذا المستند الأخطاء والاستثناءات المتوافقة رسميًا مع أجهزة المنزل الذكي. يُرجى استخدام رموز الأخطاء والاستثناءات المحدّدة في ردود الأهداف أو في الإشعارات إذا كنت قد نفّذتها، وذلك لكي يبلّغ "مساعد 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 : تمّ ضبط <device(s)> على درجة الحرارة القصوى.
  • 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)> <is/are> من قبل.
  • 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)> <has/have> an active alert and <need(s)> your assistance.
  • 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 : الأجهزة غير متوفّرة. أَقْتَرِحْ إِعْدَاد <it/them> مُجَدَّدًا. ملاحظة: احرص على أن يحافظ الخلفية على مزامنة 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> 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 : يتعذّر على <الأجهزة> الوصول إلى تلك الغرفة. يُرجى نقل <it/them> إلى الطابق الصحيح والمحاولة مجددًا.
  • functionNotSupported : في الواقع، لا يتيح <device(s)> استخدام هذه الوظيفة. ملاحظة: تأكَّد من أنّ استجابة SYNC تعكس إمكانات الجهاز بدقة.
  • genericDispenseNotSupported : أحتاج إلى معرفة ما تريدون إخراجه. يُرجى إعادة المحاولة مع تحديد اسم المادة.
  • hardError : عُذْرًا، حَدَثَ خَطَأْ وَلَا يُمْكِنُنِي التَّحَكُّمْ فِي الْجِهَازِ الْمَنْزِلِي.
  • hardError : عُذْرًا، حَدَثَ خَطَأْ وَلَا يُمْكِنُنِي التَّحَكُّمْ فِي الْجِهَازِ الْمَنْزِلِي.
  • inAutoMode : <device(s)> <is/are> مضبوط حاليًا على الوضع التلقائي. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • inAwayMode : تم حاليًا ضبط<الأجهزة> على وضع "خارج المنزل". لِلتَّحَكُّمْ فِي التِّرْمُوسْتَاتْ، يُرْجَى ضَبْطُهُ يَدَوِيًّا علَى وَضْعْ دَاخِلِ الْمَنْزِلْ بِاسْتِخْدَامْ تَطْبِيقْ Nest عَلَى الْهَاتِفْ أَوِ الْجِهَازِ اللَّوْحِي أَوِ الْكُمْبْيُوتِرْ.
  • inDryMode : تم حاليًا ضبط <device(s)> على وضع التجفيف. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • inEcoMode : تم حاليًا ضبط <device(s)> على وضع توفير الطاقة. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • 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 : تم حاليًا ضبط <device(s)> على وضع التنقية. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • 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)> على أدنى مستوى.
  • 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 : لم أفتح <device(s)> لأنّه تم رصد تساقط أمطار.
  • rangeTooClose : دَرَجَاتُ الْحَرَارَة هَذِهِ مُتَقَارِبَة جِدًّا وَلَا يُمْكِنُ اسْتِخْدَامُهَا لِإِعْدَادْ نِطَاقِ التَّدْفِئَة وَالتَّبْرِيدْ فِي <device(s)>. يُرْجَى اخْتِيَارْ دَرَجَاتْ حَرَارَة أَكْثَرْ تَبَاعُدًا.
  • relinkRequired : عُذْرًا، حَدَثَ خَطَأْ فِي الْحِسَابْ عَلَى مَا يَبْدُو. يُرجى استخدام تطبيق Google Home أو "مساعد Google" لإعادة ربط <device(s)>. ملاحظة: تأكَّد من أنّ الخادم يعرض هذا الرمز عندما يكون رمز التحديث غير صالح بشكل دائم.
  • remoteSetDisabled :
    • المَعلمة الاختيارية errorCodeReason
    • currentlyArmed - عُذْرًا، بِمَا أَنَّ جِهَازَ الْإِنْذَارْ فِي نِظَامِ الْأَمَانْ مُفَعَّلْ حَالِيًّا، يَجِبْ اسْتِخْدَامُ <device(s)> أَوِ التَّطْبِيقْ لِإِجْرَاءْ أَيّْ تَغْيِيرَاتْ.
    • remoteUnlockNotAllowed - عذرًا، لا يمكنني فتح قفل <device(s)> عن بُعد.
    • remoteControlOff - هذا الإجراء متوقّف حاليًا. يُرجى تفعيل وحدة التحكّم عن بُعد على <device(s)> وإعادة المحاولة.
    • childSafetyModeActive - هذا الإجراء غير متاح على <الأجهزة> عندما يكون وضع سلامة الأطفال مفعّلاً.
  • 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)> <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 أو بلوتوث).
  • 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.

استثناء غير مانع (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> 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":>