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

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

الأخطاء

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

يمكن إرفاق رموز الخطأ على مستوى الجهاز أو على المستوى العام. على سبيل المثال: إذا كان لدى المستخدم العديد من المصابيح من مزوّد واحد ويتم التحكم فيه من خلال موزّع، عندما إذا طلب المستخدم إطفاء كل المصابيح لديه، فيجوز لمقدِّم الخدمة إرجاع خطأ على مستوى الجهاز إذا كان مصباح واحد غير متصل بالإنترنت، أو خطأ على المستوى العام إذا أن موزّع الجهاز بالكامل غير متصل بالإنترنت ولا يمكن التحكّم في أي مصابيح. إذا لم تكن الأجهزة غير متصلة بالإنترنت، فليس هناك فرق بين استخدام المستوى العالمي أو مستوى الجهاز الأخطاء. عندما يكون الجهاز غير متصل بالإنترنت، يجب الإبلاغ عن حالة {"online": false} فيه reportState حتى في حال إرجاع رمز الخطأ deviceOffline.

باختصار:

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

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

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

تنفيذ الرد

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

{
  "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 : يمكنني ضبط <الأجهزة)> فقط لمدة تصل إلى <timeperiod>
  • actionNotAvailable : عذرًا، يبدو أنّه لا يمكنني إجراء ذلك الآن.
  • actionUnavailableWhileRunning : &lt;device(s)&gt; &lt;is/are&gt; قيد التشغيل حاليًا، لذا لا يمكنني إجراء أي تغييرات.
  • alreadyArmed : &lt;device(s)&gt; &lt;is/are&gt; سبق أن تم تجهيز سلاح
  • alreadyAtMax : &lt;device(s)&gt; &lt;is/are&gt; سبق أن تم ضبط درجة الحرارة على الحدّ الأقصى.
  • alreadyAtMin : &lt;device(s)&gt; &lt;is/are&gt; سبق أن تم ضبط الحد الأدنى لدرجة الحرارة
  • alreadyClosed : &lt;device(s)&gt; &lt;is/are&gt; سبق أن تم إغلاقه.
  • alreadyDisarmed : &lt;device(s)&gt; &lt;is/are&gt; سبق أن تم إيقافها.
  • alreadyDocked : &lt;device(s)&gt; &lt;is/are&gt; سبق أن تم تثبيت الجهاز على قاعدة الإرساء.
  • alreadyInState : &lt;device(s)&gt; &lt;is/are&gt; في هذه الحالة
  • alreadyLocked : &lt;device(s)&gt; &lt;is/are&gt; سبق أن تم قفله.
  • alreadyOff : &lt;device(s)&gt; &lt;is/are&gt; غير مفعَّلة حاليًا
  • alreadyOn : &lt;device(s)&gt; &lt;is/are&gt; مفعَّلة حاليًا
  • alreadyOpen : &lt;device(s)&gt; &lt;is/are&gt; سبق أن تم افتتاحه
  • alreadyPaused : &lt;device(s)&gt; &lt;is/are&gt; سبق أن تم إيقافه مؤقتًا.
  • alreadyStarted : &lt;device(s)&gt; &lt;is/are&gt; التي سبق أن بدأت
  • alreadyStopped : &lt;device(s)&gt; &lt;is/are&gt; سبق أن تم إيقافها.
  • alreadyUnlocked : &lt;device(s)&gt; &lt;is/are&gt; التي سبق أن تمت إتاحتها
  • ambiguousZoneName : عذرًا، <device(s)> لا يستطيع تحديد المنطقة التي تقصدها. يُرجى التأكّد من إضافة أسماء فريدة للمناطق وإعادة المحاولة.
  • amountAboveLimit : هذا أكبر من عدد أجهزة <device(s)> يمكنك دعمها.
  • appLaunchFailed : تعذّر فتح "<app name>" على <device(s)>
  • armFailure : &lt;device(s)&gt; لم يتم تسليحه
  • armLevelNeeded : لستُ متأكدًا من المستوى الذي يجب ضبطه على <الأجهزة)>. إليه. يمكنك قول "ضبط <الأجهزة)>. إلى <انخفاض الأمان>" أو "ضبط <الأجهزة)> إلى <highsecurity>"
  • authFailure : يبدو أنّني لا أستطيع الوصول إلى <الأجهزة>. يُرجى التحقّق من التطبيق للتأكّد من <device/devices>. &lt;is/are&gt; اكتملت عملية الإعداد
  • bagFull : &lt;device(s)&gt; &lt;has/have&gt; <حقيبة كاملة/حقائب كاملة> يُرجى إفراغ <it/them> وإعادة المحاولة
  • belowMinimumLightEffectsDuration : هذا أقلّ من الحدّ الأدنى للمدّة، وهو 5 دقائق. يُرجى إعادة المحاولة.
  • belowMinimumTimerDuration : لا يمكنني ضبط <الأجهزة)> لفترة قصيرة. يُرجى إعادة المحاولة.
  • binFull : &lt;device(s)&gt; &lt;has/have&gt; <سلة كاملة/سلال كاملة>
  • cancelArmingRestricted : تعذّر إلغاء تفعيل جهاز <device(s)>.
  • cancelTooLate : عذرًا، لقد فات الأوان لإلغاء الاشتراك. استخدام <الأجهزة)> أو التطبيق بدلاً من ذلك
  • channelSwitchFailed : عذرًا، تعذّر التبديل إلى القناة <channel name>. يُرجى إعادة المحاولة لاحقًا.
  • chargerIssue : عذرًا، يبدو أنّ الجهاز هو <device(s)>. &lt;has/have&gt; <مشكلة في الشاحن/مشاكل في الشاحن>
  • commandInsertFailed : تعذَّرت معالجة الأوامر لجهاز <device(s)>.
  • deadBattery : <الأجهزة> &lt;has/have&gt; <بطارية فارغة/بطاريات معطّلة>
  • degreesOutOfRange : الدرجات المطلوبة خارج نطاق <الأجهزة)>.
  • deviceAlertNeedsAssistance : &lt;device(s)&gt; &lt;has/have&gt; تنبيه نشط و<need(s)> بمساعدتك.
  • deviceAtExtremeTemperature : <الأجهزة> &lt;is/are&gt; عند <درجة حرارة شديدة الارتفاع أو أقصى حدّ>
  • deviceBusy : عذرًا، يبدو أنّ الجهاز هو <device(s)>. يقوم بشيء ما حاليًا.
  • deviceCharging : عذرًا، يبدو أنّ الجهاز هو <device(s)>. لا يمكن تنفيذ هذا الإجراء بسبب الشحن (ha_shared.Its theyre size=$item.devices.total_device_count).
  • deviceClogged : عذرًا، يبدو أنّ الجهاز هو <device(s)>. مسدود
  • deviceCurrentlyDispensing : &lt;device(s)&gt; يقوم بتوزيع شيء ما بالفعل.
  • deviceDoorOpen : الباب مفتوح على <device(s)>. يُرجى إغلاقه وإعادة المحاولة.
  • deviceHandleClosed : تم إغلاق المقبض على <device(s)>. يُرجى فتحه وإعادة المحاولة.
  • deviceJammingDetected : &lt;device(s)&gt; &lt;is/are&gt; عالِق.
  • deviceLidOpen : غطاء الجهاز مفتوح على <device(s)>. يُرجى إغلاقه وإعادة المحاولة.
  • deviceNeedsRepair : &lt;device(s)&gt; &lt;need(s)&gt; إصلاحه. يُرجى التواصل مع وكيل الصيانة المحلي.
  • deviceNotDocked : عذرًا، يبدو أنّ الجهاز هو <device(s)>. <ليس/غير'> مثبَّت على قاعدة الإرساء. يُرجى إرساء <it/them> ثم إعادة المحاولة.
  • deviceNotFound : &lt;device(s)&gt; <is/are> غير متاحة. قد تحتاج إلى محاولة تعيين <it/them> مرة أخرى
  • deviceNotMounted : عذرًا، يبدو أنّ الجهاز هو <device(s)>. ولن يتمكن من فعل ذلك لأن <هذا/هم> <is/are>غير مثبَّتة.
  • deviceNotReady : &lt;device(s)&gt; <is/are>غير جاهز
  • deviceStuck : &lt;device(s)&gt; &lt;is/are&gt; عالِق ويحتاج إلى مساعدتك.
  • deviceTampered : <الأجهزة> &lt;has/have&gt; تم التلاعب به.
  • deviceThermalShutdown : عذرًا، يبدو أنّ الجهاز هو <device(s)>. متوقف عن العمل بسبب درجات الحرارة الشديدة
  • directResponseOnlyUnreachable : &lt;device(s)&gt; <لا تفعل/لا> إتاحة جهاز التحكّم عن بُعد
  • disarmFailure : &lt;device(s)&gt; تعذَّر إيقافها.
  • discreteOnlyOpenClose : عذرًا، <device(s)> أو فتحه أو إغلاقه تمامًا.
  • dispenseAmountAboveLimit : &lt;device(s)&gt; لا يمكنك توزيع هذا القدر الكبير
  • dispenseAmountBelowLimit : &lt;device(s)&gt; لا يمكنك توزيع هذا الكمية الصغيرة.
  • dispenseAmountRemainingExceeded : &lt;device(s)&gt; لا يتضمّن <توزيع العنصر> ما يكفي
  • dispenseFractionalAmountNotSupported : &lt;device(s)&gt; لا يمكن توزيع كسور من <dispense item>.
  • dispenseFractionalUnitNotSupported : &lt;device(s)&gt; لا تشمل هذه الوحدة كسورًا من هذه الوحدة لـ <dispense item> .
  • dispenseUnitNotSupported : &lt;device(s)&gt; لا يتوافق مع هذه الوحدة لـ <dispense item> .
  • doorClosedTooLong : مرّت فترة طويلة على فتح أبواب <device(s)>. تم فتح. يُرجى فتح الباب والتأكّد من وجود شيء بداخله وإعادة المحاولة.
  • emergencyHeatOn : &lt;device(s)&gt; &lt;is/are&gt; في "وضع التدفئة الطارئة"، لذا يجب ضبطها يدويًا.
  • faultyBattery : <الأجهزة> &lt;has/have&gt; <البطاريات تتضمّن عيوبًا أو البطاريات المعيبة>
  • floorUnreachable : &lt;device(s)&gt; لا يمكنك الوصول إلى تلك الغرفة. يُرجى نقلها <it/them> إلى الطابق الصحيح وإعادة المحاولة.
  • functionNotSupported : في الواقع، <device(s)> <لا تفعل/لا> التي تدعم هذه الوظيفة.
  • genericDispenseNotSupported : أحتاج إلى معرفة ما تريد توزيعه. يُرجى إعادة المحاولة باستخدام اسم العنصر.
  • hardError : حدث خطأ ولا يمكنني التحكّم في جهازك المنزلي.
  • hardError : حدث خطأ ولا يمكنني التحكّم في جهازك المنزلي.
  • inAutoMode : &lt;device(s)&gt; &lt;is/are&gt; معيّنة حاليًا على الوضع التلقائي. لتغيير درجة الحرارة، يجب التبديل <اسم/> إلى وضع مختلف
  • inAwayMode : &lt;device(s)&gt; &lt;is/are&gt; الميزة مضبوطة حاليًا على الوضع "غير متاح". للتحكّم بالترموستات، عليك تبديله يدويًا إلى وضع "داخل المنزل" باستخدام تطبيق Nest على هاتف أو جهاز لوحي أو جهاز كمبيوتر.
  • inDryMode : &lt;device(s)&gt; &lt;is/are&gt; مضبوط حاليًا على الوضع "جاف". لتغيير درجة الحرارة، يجب التبديل <اسم/> إلى وضع مختلف
  • inEcoMode : &lt;device(s)&gt; &lt;is/are&gt; تم ضبطها حاليًا على وضع "درجات حرارة اقتصادية". لتغيير درجة الحرارة، يجب التبديل <اسم/> إلى وضع مختلف
  • inFanOnlyMode : &lt;device(s)&gt; &lt;is/are&gt; مضبوط حاليًا على وضع "المروحة فقط". لتغيير درجة الحرارة، يجب التبديل <اسم/> إلى وضع مختلف
  • inHeatOrCool : &lt;device(s)&gt; <is/are>ليس في وضع التدفئة أو التبريد.
  • inHumidifierMode : &lt;device(s)&gt; &lt;is/are&gt; تَمّْ ضَبْطِ الْإِعْدَادْ عَلَى وَضْعْ تَرْطِيبِ الْهَوَا. لتغيير درجة الحرارة، يجب التبديل <اسم/> إلى وضع مختلف
  • inOffMode : &lt;device(s)&gt; &lt;is/are&gt; الميزة قيد الإيقاف حاليًا. لتغيير درجة الحرارة، يجب التبديل <اسم/> إلى وضع مختلف
  • inPurifierMode : &lt;device(s)&gt; &lt;is/are&gt; مَضْبُوطَة حَالِيًّا عَلَى وَضْعْ تَنْقِيَةِ الْهَوَاءْ. لتغيير درجة الحرارة، يجب التبديل <اسم/> إلى وضع مختلف
  • inSleepMode : &lt;device(s)&gt; &lt;is/are&gt; في وضع السكون. يُرجى إعادة المحاولة لاحقًا.
  • inSoftwareUpdate : <الأجهزة> &lt;is/are&gt; حاليًا في تحديث للبرنامج.
  • lockFailure : &lt;device(s)&gt; تعذَّر قفلها.
  • lockedState : &lt;device(s)&gt; &lt;is/are&gt; الجهاز مُقفَل حاليًا
  • lockedToRange : درجة الحرارة هذه خارج النطاق المُقفَل على <الأجهزة>.
  • lowBattery : <الأجهزة> &lt;has/have&gt; طاقة البطارية منخفضة.
  • maxSettingReached : &lt;device(s)&gt; &lt;is/are&gt; سبق أن تم ضبطها على أعلى خيار.
  • maxSpeedReached : &lt;device(s)&gt; &lt;is/are&gt; سبق أن تم ضبطها على الحدّ الأقصى للسرعة.
  • minSettingReached : &lt;device(s)&gt; &lt;is/are&gt; سبق أن تم ضبط الإعدادات على أدنى مستوى
  • minSpeedReached : &lt;device(s)&gt; &lt;is/are&gt; سبق أن تم ضبطها على الحدّ الأدنى للسرعة.
  • monitoringServiceConnectionLost : &lt;device(s)&gt; &lt;has/have&gt; فقدان <its/their> بخدمة المراقبة.
  • needsAttachment : عذرًا، يبدو أنّ الجهاز هو <device(s)>. &lt;is/are&gt; لم يتمّ العثور على مرفق مطلوب. يُرجى استبداله وإعادة المحاولة.
  • needsBin : عذرًا، يبدو أنّ الجهاز هو <device(s)>. &lt;is/are&gt; أي سلة. يُرجى استبداله وإعادة المحاولة.
  • needsPads : &lt;device(s)&gt; &lt;need(s)&gt; لوحات جديدة.
  • needsSoftwareUpdate : <الأجهزة> &lt;need(s)&gt; تحديث للبرنامج.
  • needsWater : &lt;device(s)&gt; &lt;need(s)&gt; الماء
  • networkProfileNotRecognized : عذرًا، لم أتعرّف على "<network profile>". على <device(s)>
  • networkSpeedTestInProgress : أنا أختبر حاليًا <الشبكة> <السرعة/السرعة>>:
  • noAvailableApp : عذرًا، يبدو أنّ تطبيق <اسم التطبيق>. غير متوفّرة.
  • noAvailableChannel : عذرًا، يبدو أنّ القناة <channel name> هي قناة. غير متوفّرة.
  • noChannelSubscription : عذرًا، لست مشتركًا في قناة "<channel name>". حاليًا
  • noTimerExists : عذرًا، يبدو أنّه لم يتم ضبط أي موقّتات على <device(s)>.
  • notSupported : عذرًا، هذا الوضع غير متاح لأجهزة <device(s)>.
  • obstructionDetected : &lt;device(s)&gt; رصدت عوائق.
  • بلا إنترنت ، جهاز غير متصل بالإنترنت : عذرًا، يبدو أنّ الجهاز هو <device(s)>. <is/are>غير متوفّر حاليًا.
  • onRequiresMode : يُرجى تحديد الوضع المطلوب تفعيله.
  • passphraseIncorrect : عذرًا، يبدو أنّ رقم التعريف الشخصي غير صحيح.
  • percentOutOfRange : عذرًا، لا يمكنني ضبط <الأجهزة)> إلى <percent>.
  • pinIncorrect : (passphraseIncorrect)
  • rainDetected : لم أفتح <الأجهزة)> لأنّه تم رصد تساقط أمطار.
  • rangeTooClose : هذه الأجهزة قريبة جدًا من نطاق التدفئة - التبريد لأجهزة <الأجهزة>. يُرجى اختيار درجات حرارة بعيدة عن بعضها.
  • relinkRequired : عذرًا، يبدو أنّه حدث خطأ في حسابك. يُرجى استخدام Google Home أو تطبيق "مساعد Google" لإعادة ربط <الأجهزة>.
  • remoteSetDisabled :
    • المعلمة الاختيارية errorCodeReason
    • currentlyArmed - عذرًا، نظرًا لأنه تم تفعيل جهاز الأمان من قبل، يجب استخدام <device(s)>. أو التطبيق لإجراء أي تغييرات.
    • remoteUnlockNotAllowed - عذرًا، لا يمكنني فتح قفل <device(s)> عن بُعد
    • remoteControlOff - هذا الإجراء غير مفعَّل حاليًا. يُرجى تفعيل جهاز التحكّم عن بُعد على <device(s)> ثم إعادة المحاولة.
    • childSafetyModeActive - تم إيقاف هذا الإجراء لأجهزة <device(s)> عندما يكون "وضع أمان الأطفال" مفعَّلاً
  • roomsOnDifferentFloors : &lt;device(s)&gt; لن تتمكَّن من الوصول إلى تلك الغرف لأنها في طوابق مختلفة.
  • safetyShutOff : &lt;device(s)&gt; &lt;is/are&gt; في "وضع إيقاف التشغيل الآمن"، لذا يجب ضبط <it/عيد> يدويًا.
  • sceneCannotBeApplied : عذرًا، <device(s)> تطبيقها.
  • securityRestriction : &lt;device(s)&gt; &lt;has/have&gt; فرض قيود أمنية.
  • softwareUpdateNotAvailable : لا يتوفّر تحديث للبرامج على <device(s)>.
  • startRequiresTime : لإجراء ذلك، يجب إخبارنا بمدة تشغيل <device(s)>.
  • stillCoolingDown : &lt;device(s)&gt; &lt;is/are&gt; لا تزال تنخفض درجة حرارتها.
  • stillWarmingUp : &lt;device(s)&gt; &lt;is/are&gt; ولا تزال في مرحلة التحضير.
  • streamUnavailable : عذرًا، يبدو أنّ البث غير متوفّر حاليًا من <device(s)>.
  • streamUnplayable : يتعذّر عليّ تشغيل البث من <device(s)> حاليًا
  • tankEmpty : &lt;device(s)&gt; &lt;has/have&gt; <خزّان فارغ/خزّانات فارغة>. يُرجى ملء <هذا/هم> وإعادة المحاولة
  • targetAlreadyReached : عذرًا، يبدو أنّ هذه درجة الحرارة الحالية.
  • timerValueOutOfRange : &lt;device(s)&gt; لا يمكن ضبطها على هذه المدة.
  • tooManyFailedAttempts : عذرًا، لقد تعذّر إجراء محاولات كثيرة جدًا. يُرجى الانتقال إلى التطبيق على جهازك لإكمال هذا الإجراء.
  • transientError : عذرًا، حدث خطأ أثناء التحكّم في <device(s)>. يُرجى إعادة المحاولة.
  • turnedOff ، تم إيقاف الجهاز : &lt;device(s)&gt; &lt;is/are&gt; الآن
  • unableToLocateDevice : تعذّر علينا تحديد موقع <الأجهزة>.
  • unknownFoodPreset : &lt;device(s)&gt; لَا يَتَوَفَّرْ هَذَا الْإِعْدَادُ الْمُسْبَقْ لِلْأَكْلْ.
  • unlockFailure : &lt;device(s)&gt; تعذَّر فتح قفلها.
  • unpausableState : &lt;device(s)&gt; لا يمكن إيقافها مؤقتًا الآن.
  • userCancelled : حسنًا
  • valueOutOfRange : &lt;device(s)&gt; لا يمكن ضبطها على درجة الحرارة تلك

الاستثناءات

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

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

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

إذا فشل الأمر بسبب بعض الاستثناءات، يجب أن تكون الحالة "استثناءات"، ويجب الإبلاغ عن الاستثناءات باستخدام السمة 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"
          }
        ]
      }
    }
  }
}

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

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

  • bagFull : &lt;device(s)&gt; &lt;has/have&gt; <حقيبة كاملة/حقائب كاملة> يُرجى إفراغ <it/them> وإعادة المحاولة
  • binFull : &lt;device(s)&gt; &lt;has/have&gt; <سلة كاملة/سلال كاملة>
  • carbonMonoxideDetected : تم رصد أول أكسيد الكربون في <اسم المنزل>.
  • deviceAtExtremeTemperature : <الأجهزة> &lt;is/are&gt; عند <درجة حرارة شديدة الارتفاع أو أقصى حدّ>
  • deviceJammingDetected : &lt;device(s)&gt; &lt;is/are&gt; عالِق.
  • deviceMoved : &lt;device(s)&gt; &lt;was/were&gt; العمل.
  • deviceOpen : <الأجهزة> &lt;is/are&gt; مفتوحة.
  • deviceTampered : <الأجهزة> &lt;has/have&gt; تم التلاعب به.
  • deviceUnplugged : <الأجهزة> &lt;is/are&gt; الجهاز غير موصول بمصدر طاقة.
  • floorUnreachable : &lt;device(s)&gt; لا يمكنك الوصول إلى تلك الغرفة. يُرجى نقلها <it/them> إلى الطابق الصحيح وإعادة المحاولة.
  • hardwareFailure : <الأجهزة> &lt;has/have&gt; أي مشكلة في الجهاز.
  • inSoftwareUpdate : <الأجهزة> &lt;is/are&gt; حاليًا في تحديث للبرنامج.
  • isBypassed : &lt;device(s)&gt; &lt;is/are&gt; تم تجاوزها حاليًا.
  • lowBattery : <الأجهزة> &lt;has/have&gt; طاقة البطارية منخفضة.
  • motionDetected : <الأجهزة> &lt;detect(s)&gt; والحركة.
  • needsPads : &lt;device(s)&gt; &lt;need(s)&gt; لوحات جديدة.
  • needsSoftwareUpdate : <الأجهزة> &lt;need(s)&gt; تحديث للبرنامج.
  • needsWater : &lt;device(s)&gt; &lt;need(s)&gt; الماء
  • networkJammingDetected : الاتصال بالشبكة المنزلية بجهاز <device(s)> لا يعمل بشكل صحيح.
  • noIssuesReported : &lt;device(s)&gt; لم يتم الإبلاغ عن أي مشاكل.
  • roomsOnDifferentFloors : &lt;device(s)&gt; لن تتمكَّن من الوصول إلى تلك الغرف لأنها في طوابق مختلفة.
  • runCycleFinished : &lt;device(s)&gt; &lt;has/have&gt; من الركض.
  • securityRestriction : &lt;device(s)&gt; &lt;has/have&gt; فرض قيود أمنية.
  • smokeDetected : تم رصد دخان في <اسم المنزل>.
  • tankEmpty : &lt;device(s)&gt; &lt;has/have&gt; <خزّان فارغ/خزّانات فارغة>. يُرجى ملء <هذا/هم> وإعادة المحاولة
  • usingCellularBackup : <الأجهزة> &lt;is/are&gt; باستخدام بيانات شبكة الجوّال الاحتياطية.
  • waterLeakDetected : <الأجهزة> &lt;detect(s)&gt; تسرُّب المياه.