خطاها و استثناها

این سند خطاها و استثناهای دستگاه‌های خانه هوشمند را که به‌طور رسمی پشتیبانی می‌شوند فهرست می‌کند. لطفاً از این کد خطاها و استثناهای ارائه‌شده در پاسخ هدف، یا در اعلان‌ها (اگر آن را پیاده‌سازی کرده‌اید) استفاده کنید تا «دستیار 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"
            }
          }
        }
      }
    }
  }
}

فهرست خطاها

خطاهای زیر باعث ایجاد «نوشتار به گفتار» مرتبط در دستگاه می‌شود.

  • aboveMaximumLightEffectsDuration : این بیشتر از حداکثر مدت ۱ ساعت است. لطفاً دوباره امتحان کنید.
  • aboveMaximumTimerDuration : فقط می‌توانم <دستگاه(ها)> را برای حداکثر <دوره زمانی> تنظیم کنم
  • actionNotAvailable : متأسفم، به‌نظر می‌رسد درحال‌حاضر نمی‌توانم این کار را انجام دهم. نکته: ویژگی‌های دستگاه و منطق وضعیت فعلی را در اجرای خود تأیید کنید.
  • actionUnavailableWhileRunning : <device(s)> درحال‌حاضر روشن است، بنابراین نمی‌توانم تغییری ایجاد کنم.
  • alreadyArmed : <device(s)> <is/are> already armed.
  • alreadyAtMax : <device(s)> <is/are> already set to the maximum temperature.
  • alreadyAtMin : <device(s)> <is/are> already set to the minimum temperature.
  • 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)> <is/are> already paused.
  • alreadyStarted : <device(s)> <is/are> already started.
  • alreadyStopped : <device(s)> <is/are> already stopped.
  • alreadyUnlocked : <device(s)> <is/are> already unlocked.
  • ambiguousZoneName : متأسفم، <دستگاه(ها)> نمی‌تواند تشخیص دهد منظورتان کدام منطقه است. لطفاً مطمئن شوید مناطق شما نام‌های یکتا دارند و دوباره امتحان کنید.
  • amountAboveLimit : این مقدار بیشتر از چیزی است که <دستگاه(ها)> می‌تواند پشتیبانی کند.
  • appLaunchFailed : متأسفیم، <app name> در <device(s)> راه‌اندازی نشد. نکته: appId و پشتیبانی شدن برنامه در سخت‌افزار هدف را درستی‌سنجی کنید.
  • armFailure : <device(s)> آماده‌به‌کار نشد.
  • armLevelNeeded : مطمئن نیستم <دستگاه(ها)> را روی کدام سطح تنظیم کنم. بگویید «Set <device(s)> to <low security>‎» (تنظیم <دستگاه(ها)> روی <امنیت پایین>) یا «Set <device(s)> to <high security>‎» (تنظیم <دستگاه(ها)> روی <امنیت بالا>)
  • authFailure : ظاهراً نمی‌توانم به <دستگاه(ها)> دسترسی پیدا کنم. برنامه را بررسی کنید تا مطمئن شوید <دستگاه/دستگاه‌ها> کاملاً راه‌اندازی شده <است/اند>.
  • bagFull : <device(s)> <has/have> <a full bag/full bags>. Please empty <it/them> and try again.
  • belowMinimumLightEffectsDuration : این کمتر از حداقل مدت ۵ دقیقه است. لطفاً دوباره امتحان کنید.
  • belowMinimumTimerDuration : نمی‌توانم <device(s)> را برای چنین زمان کوتاهی تنظیم کنم. لطفاً دوباره امتحان کنید.
  • binFull : <device(s)> <has/have> <a full bin/full bins>.
  • cancelArmingRestricted : متأسفم، نتوانستم فعال‌سازی <دستگاه(ها)> را لغو کنم.
  • cancelTooLate : متأسفیم، برای لغو کردن خیلی دیر است. درعوض از <دستگاه(ها)> یا برنامه استفاده کنید.
  • channelSwitchFailed : متأسفیم، انتقال به کانال <channel name> انجام نشد. لطفاً بعداً دوباره امتحان کنید. نکته: نام/شماره کانال و وضعیت اشتراک را برای کاربر تأیید کنید.
  • chargerIssue : متأسفم، به‌نظر می‌رسد <دستگاه(ها)> <مشکل شارژر> <دارد/دارند>. نکته: شریک باید تله‌متری سطح سخت‌افزار و سلامت باتری را بررسی کند.
  • commandInsertFailed : پردازش فرمان‌ها برای <دستگاه(ها)> امکان‌پذیر نیست. نکته: عملکرد نوشتن پایگاه داده یا منطق صف‌بندی فرمان داخلی را بررسی کنید.
  • deadBattery : <device(s)> <has/have> <a dead battery/dead batteries>.
  • degreesOutOfRange : درجه درخواستی برای <دستگاه(ها)> خارج از محدوده است.
  • 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 : متأسفم، به‌نظر می‌رسد <دستگاه(ها)> درحال‌حاضر مشغول انجام کار دیگری است.
  • deviceCharging : متأسفم، به‌نظر می‌رسد <دستگاه(ها)> نمی‌تواند این کار را انجام دهد چون (ha_shared.ItsTheyre size=$item.devices.total_device_count) درحال شارژ است.
  • deviceClogged : متأسفم، به‌نظر می‌رسد <دستگاه(ها)> مسدود شده است.
  • deviceCurrentlyDispensing : <device(s)> is already dispensing something right now.
  • deviceDoorOpen : در <دستگاه(ها)> باز است. لطفاً آن را ببندید و دوباره امتحان کنید.
  • deviceHandleClosed : دستگیره در <دستگاه(ها)> بسته است. لطفاً آن را باز کنید و دوباره امتحان کنید.
  • deviceJammingDetected : <device(s)> <is/are> jammed.
  • deviceLidOpen : درپوش <دستگاه(ها)> باز است. لطفاً آن را ببندید و دوباره امتحان کنید.
  • deviceNeedsRepair : <device(s)> <need(s)> to be repaired. لطفاً با نمایندگی خدمات محلی‌تان تماس بگیرید.
  • deviceNotDocked : متأسفم، به‌نظر می‌رسد <device(s)> در جایگاه قرار <isn't/aren't>. لطفاً <it/them> را در جایگاه قرار دهید و دوباره امتحان کنید.
  • deviceNotFound : <device(s)> <is/are>n't available. شاید بخواهید دوباره <it/them> را راه‌اندازی کنید. نکته: مطمئن شوید که باطن شما همیشه Home Graph را همگام نگه می‌دارد. هرگاه دستگاهی اضافه یا برداشته شد، با requestSync تماس بگیرید.
  • deviceNotMounted : متأسفم، به‌نظر می‌رسد <دستگاه(ها)> نمی‌تواند این کار را انجام دهد چون سوار نشده است.
  • deviceNotReady : <device(s)> <is/are>n't ready.
  • deviceStuck : <device(s)> <is/are> stuck and needs your help.
  • دستکاری دستگاه : <دستگاه(ها)> دستکاری شده است.
  • deviceThermalShutdown : متأسفانه به‌نظر می‌رسد <دستگاه(ها)> به‌دلیل دمای بسیار بالا خاموش شده است.
  • directResponseOnlyUnreachable : <device(s)> <doesn't/don't> support remote control.
  • disarmFailure : <device(s)> غیرفعال نشد.
  • discreteOnlyOpenClose : متأسفم، <دستگاه(ها)> فقط می‌تواند کاملاً باز یا بسته شود.
  • dispenseAmountAboveLimit : <دستگاه(ها)> نمی‌تواند این مقدار زیاد را توزیع کند.
  • dispenseAmountBelowLimit : <device(s)> can't dispense such a small amount.
  • dispenseAmountRemainingExceeded : <دستگاه(ها)> <مورد توزیع> کافی برای انجام این کار ندارد.
  • dispenseFractionalAmountNotSupported : <device(s)> can't dispense fractions of <dispense item>.
  • dispenseFractionalUnitNotSupported : <device(s)> doesn't support fractions of that unit for <dispense item>.
  • dispenseUnitNotSupported : <device(s)> doesn't support that unit for <dispense item>.
  • doorClosedTooLong : مدتی است که در <دستگاه(ها)> باز نشده است. لطفاً در را باز کنید، مطمئن شوید چیزی داخل آن است، و دوباره امتحان کنید.
  • 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)> از این عملکرد پشتیبانی <doesn't/don't>. نکته: مطمئن شوید پاسخ SYNC شما به‌درستی قابلیت‌های دستگاه را منعکس می‌کند.
  • genericDispenseNotSupported : باید بدانم چه چیزی می‌خواهید توزیع شود. لطفاً دوباره با نام مورد امتحان کنید.
  • hardError : متأسفم، مشکلی پیش آمد و نمی‌توانم دستگاه خانه‌تان را کنترل کنم.
  • hardError : متأسفم، مشکلی پیش آمد و نمی‌توانم دستگاه خانه‌تان را کنترل کنم.
  • inAutoMode : <device(s)> <is/are> currently set to auto mode. برای تغییر دما، باید <آن/آن‌ها> را به حالت دیگری تغییر دهید.
  • inAwayMode : <device(s)> <is/are> currently set to away mode. برای کنترل کردن دماپا، باید آن را به‌طور دستی بااستفاده از برنامه Nest در تلفن، رایانه لوحی، یا رایانه به حالت «خانه بودن» تغییر دهید.
  • inDryMode : <device(s)> <is/are> currently set to dry mode. برای تغییر دما، باید <آن/آن‌ها> را به حالت دیگری تغییر دهید.
  • inEcoMode : <device(s)> <is/are> currently set to eco mode. برای تغییر دما، باید <آن/آن‌ها> را به حالت دیگری تغییر دهید.
  • inFanOnlyMode : <device(s)> <is/are> currently set to fan-only mode. برای تغییر دما، باید <آن/آن‌ها> را به حالت دیگری تغییر دهید.
  • inHeatOrCool : <device(s)> <is/are>n't in heat/cool mode.
  • inHumidifierMode : <device(s)> <is/are> currently set to humidifier mode. برای تغییر دما، باید <آن/آن‌ها> را به حالت دیگری تغییر دهید.
  • 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> currently set to purifier mode. برای تغییر دما، باید <آن/آن‌ها> را به حالت دیگری تغییر دهید.
  • inSleepMode : <device(s)> <is/are> in sleep mode. لطفاً بعداً دوباره امتحان کنید.
  • inSoftwareUpdate : <device(s)> <is/are> currently in a software update.
  • lockFailure : <device(s)> قفل نشد. نکته: گیر کردن فیزیکی، کم بودن شارژ باتری، یا خرابی موتور را در سخت‌افزار قفل بررسی کنید.
  • lockedState : <device(s)> <is/are> currently locked.
  • lockedToRange : این دما خارج از محدوده قفل‌شده در <دستگاه(ها)> است.
  • lowBattery : شارژ باتری <دستگاه(ها)> کم است.
  • maxSettingReached : <device(s)> <is/are> already set to the highest setting.
  • maxSpeedReached : <دستگاه(ها)> ازقبل روی حداکثر سرعت تنظیم شده است.
  • minSettingReached : <device(s)> <is/are> already set to the lowest setting.
  • minSpeedReached : <device(s)> <is/are> already set to the minimum speed.
  • monitoringServiceConnectionLost : اتصال <دستگاه(ها)> با سرویس پایش قطع شده است.
  • needsAttachment : متأسفم، به‌نظر می‌رسد <device(s)> پیوست لازم را ندارد. لطفاً آن را جایگزین کنید و دوباره امتحان کنید.
  • needsBin : متأسفم، به‌نظر می‌رسد <device(s)> سطل زباله ندارد. لطفاً آن را جایگزین کنید و دوباره امتحان کنید.
  • needsPads : <device(s)> <need(s)> new pads.
  • needsSoftwareUpdate : <device(s)> <need(s)> a software update.
  • needsWater : <device(s)> <need(s)> water.
  • networkProfileNotRecognized : متأسفم، «<نمایه شبکه>» را در <دستگاه(ها)> تشخیص نمی‌دهم. نکته: بررسی کنید رشته نام نمایه با نمایه‌های پشتیبانی‌شده در پاسخ SYNC مطابقت داشته باشد.
  • networkSpeedTestInProgress : I'm already testing the <network> <speed/speeds>>.
  • noAvailableApp : متأسفانه به‌نظر می‌رسد <app name> دردسترس نیست.
  • noAvailableChannel : متأسفانه به‌نظر می‌رسد کانال <channel name> دردسترس نیست.
  • noChannelSubscription : متأسفیم، درحال‌حاضر در کانال <channel name> مشترک نیستید.
  • noTimerExists : متأسفم، به‌نظر می‌رسد زمان‌سنجی در <دستگاه(ها)> تنظیم نشده است.
  • notSupported : متأسفانه این حالت برای <device(s)> دردسترس نیست.
  • obstructionDetected : <device(s)> مانعی را شناسایی کرد.
  • آفلاین ، deviceOffline : متأسفم، به‌نظر می‌رسد <دستگاه(ها)> درحال‌حاضر دردسترس نیست.
  • onRequiresMode : لطفاً مشخص کنید کدام حالت را می‌خواهید روشن کنید.
  • passphraseIncorrect : متأسفیم، به‌نظر می‌رسد پین نادرست است.
  • percentOutOfRange : متأسفم، نمی‌توانم <دستگاه(ها)> را روی <درصد> تنظیم کنم.
  • pinIncorrect : (passphraseIncorrect)
  • rainDetected : <دستگاه(ها)> را باز نکردم چون باران تشخیص داده شد.
  • rangeTooClose : این دماها برای محدوده «گرما-سرما» در <دستگاه(ها)> خیلی نزدیک به هم هستند. دماهایی را انتخاب کنید که فاصله بیشتری از هم داشته باشند.
  • relinkRequired : متأسفیم، ظاهراً مشکلی در حسابتان پیش آمده است. لطفاً از برنامه Google Home یا «دستیار» برای پیوند مجدد <دستگاه(ها)> استفاده کنید. نکته: مطمئن شوید که وقتی ژتون بازآوری برای همیشه نامعتبر است، سرورتان این کد را برمی‌گرداند.
  • remoteSetDisabled :
    • پارامتر اختیاری errorCodeReason
    • currentlyArmed - متأسفم، چون سیستم امنیتی ازقبل فعال شده است، برای ایجاد تغییرات باید از <دستگاه(ها)> یا برنامه استفاده کنید.
    • remoteUnlockNotAllowed - متأسفم، نمی‌توانم قفل <دستگاه(ها)> را از راه دور باز کنم.
    • remoteControlOff - این کنش درحال‌حاضر غیرفعال است. لطفاً کنترل از راه دور را در <دستگاه(ها)> فعال کنید و دوباره امتحان کنید.
    • 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 : متأسفیم، <دستگاه(ها)> اعمال نمی‌شود. نکته: سلامت داخلی صحنه‌های کاربر را در فضای ابری شریک بررسی کنید.
  • securityRestriction : <device(s)> <has/have> a security restriction.
  • softwareUpdateNotAvailable : متأسفانه به‌روزرسانی نرم‌افزاری برای <دستگاه(ها)> دردسترس نیست.
  • startRequiresTime : برای انجام این کار، باید به من بگویید که می‌خواهید <دستگاه(ها)> را برای چه مدت اجرا کنید.
  • stillCoolingDown : <device(s)> <is/are> still cooling down.
  • stillWarmingUp : <device(s)> <is/are> still warming up.
  • streamUnavailable : متأسفم، به‌نظر می‌رسد جاری‌سازی از <دستگاه(ها)> درحال‌حاضر دردسترس نیست.
  • streamUnplayable : متأسفم، درحال‌حاضر نمی‌توانم جاری‌سازی را از <دستگاه(ها)> پخش کنم. نکته: سیگنال‌دهی WebRTC/HLS را تأیید کنید و مطمئن شوید که نشانی وب جاری‌سازی معتبر است.
  • tankEmpty : <device(s)> <has/have> <an empty tank/empty tanks>. Please fill <it/them> and try again.
  • targetAlreadyReached : متأسفم، به‌نظر می‌رسد دمای فعلی همین است.
  • timerValueOutOfRange : <device(s)> را نمی‌توان برای این مدت تنظیم کرد.
  • tooManyFailedAttempts : متأسفانه تعداد تلاش‌های ناموفق بیش‌از حد بوده است. لطفاً برای تکمیل این کنش، به برنامه دستگاهتان بروید.
  • transientError : متأسفم، مشکلی در کنترل کردن <دستگاه(ها)> پیش آمد. لطفاً دوباره امتحان کنید. نکته: معمولاً این خطاها به‌صورت قطع اتصال به دستگاه یا سرویس ظاهر می‌شوند. همچنین اگر اتصال‌های جدید به سرور باز نشود.
  • turnedOff , deviceTurnedOff : <device(s)> <is/are> off right now.
  • unableToLocateDevice : نتوانستم <دستگاه(ها)> را پیدا کنم. نکته: اتصال‌پذیری محلی دستگاه (Wi-Fi/بلوتوث) را بررسی کنید.
  • unknownFoodPreset : <device(s)> از آن پیش‌تنظیم غذا پشتیبانی نمی‌کند.
  • unlockFailure : قفل <دستگاه(ها)> باز نشد. نکته: گیر کردن سخت‌افزار، کم بودن شارژ باتری، یا وارد کردن پین نامعتبر را بررسی کنید.
  • unpausableState : درحال‌حاضر نمی‌توان <دستگاه(ها)> را موقتاً متوقف کرد.
  • userCancelled : ok
  • valueOutOfRange : <دستگاه(ها)> نمی‌تواند روی آن دما تنظیم شود.

گزارش وضعیت آنلاین و آفلاین

وقتی دستگاهی آفلاین است، باید <code{"online": code="" dir="ltr" false}<="" translate="no"> را به گزارش وضعیت ظرف پنج دقیقه از رفتار دستگاه گزارش کنید. برعکس، وقتی دستگاه به حالت آنلاین برمی‌گردد، باید ظرف پنج دقیقه از رفتار دستگاه، <code{"online": code="" dir="ltr" translate="no" true}<=""> را به گزارش وضعیت گزارش دهید. هرگاه دستگاهی دوباره آنلاین شود، شریک باید همه وضعیت‌های فعلی دستگاه را بااستفاده از reportStateAndNotification API گزارش کند. این مثال نشان می‌دهد که نوع دستگاه light آنلاین است و همه وضعیت‌های فعلی دستگاه را گزارش می‌کند.
"requestId": "test-request-id",
  "agentUserId": "agent-user-1",
    "payload":{
      "devices": {
        "states": {
          "device-id-1": {
            "brightness": 65,
            "on": true,
            "online": true
          }
          "notifications": {},
        }
      }
    }

استثناها

وقتی مشکل یا هشداری مرتبط با فرمان وجود دارد، باید استثنایی را برگردانید. فرمان ممکن است موفق شود یا شکست بخورد.

اگر فرمان موفقیت‌آمیز بود (وضعیت = «موفقیت»)، استثناها را بااستفاده از ویژگی 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"
      }
    }]
  }
}

استثنای غیرمسدودکننده (موفقیت) درباره دستگاهی دیگر بااستفاده از 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"
        }]
      }
    }]
  }
}

Blocking exception about another device using 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)> <is/are> jammed.
  • deviceMoved : <دستگاه(ها)> منتقل شد.
  • deviceOpen : <device(s)> <is/are> open.
  • دستکاری دستگاه : <دستگاه(ها)> دستکاری شده است.
  • deviceUnplugged : <device(s)> <is/are> unplugged.
  • floorUnreachable : <دستگاه(ها)> نمی‌تواند به آن اتاق دسترسی پیدا کند. لطفاً <it/them> را به طبقه درست منتقل کنید و دوباره امتحان کنید.
  • hardwareFailure : <device(s)> <has/have> a hardware problem.
  • inSoftwareUpdate : <device(s)> <is/are> currently in a software update.
  • isBypassed : <device(s)> <is/are> currently bypassed.
  • lowBattery : شارژ باتری <دستگاه(ها)> کم است.
  • 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 : <دستگاه(ها)> مشکلی گزارش نکرده‌اند.
  • roomsOnDifferentFloors : <دستگاه(ها)> نمی‌تواند به آن اتاق‌ها دسترسی پیدا کند چون در طبقات مختلفی هستند.
  • runCycleFinished : <device(s)> <has/have> finished running.
  • 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)> <is/are> using cellular backup.
  • waterLeakDetected : <device(s)> <detect(s)> a water leak.
</code{"online":></code{"online":>