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

این سند خطاهای پشتیبانی‌شده رسمی و استثناهای مربوط به دستگاه‌های خانه هوشمند را فهرست می‌کند. لطفاً از این کدهای خطا و استثنا در پاسخ هدف یا در اعلان‌ها (اگر آن را پیاده‌سازی کرده‌اید) استفاده کنید تا «دستیار 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 : فقط می‌توانم <device(s)> را برای حداکثر <time period> تنظیم کنم
  • actionNotAvailable : متأسفانه درحال‌حاضر نمی‌توانم این کار را انجام دهم. نکته: ویژگی‌های دستگاه و منطق وضعیت کنونی را در انجام درخواستتان به‌تأیید برسانید.
  • actionUnavailableWhileRunning : <device(s)> درحال‌حاضر درحال اجرا است، بنابراین نمی‌توانم هیچ تغییری ایجاد کنم.
  • alreadyArmed : <device(s)> <is/are> already مسلح است.
  • alreadyAtMax : <device(s)> <is/are> ازقبل روی حداکثر دما تنظیم شده است.
  • 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)> ازقبل قفل شده است/هستند.
  • alreadyOff : <دستگاه(ها)> ازقبل خاموش <است/هستند>.
  • 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 : متأسفانه <device(s)> نمی‌تواند تشخیص دهد منظورتان کدام منطقه است. لطفاً مطمئن شوید که نام‌های مناطق شما یکتا باشد و دوباره امتحان کنید.
  • مقدار بالاتر از حد مجاز : این مقدار بیشتر از مقداری است که <دستگاه(ها)> پشتیبانی می‌کند.
  • appLaunchFailed : متأسفانه <app name> در <device(s)> راه‌اندازی نشد. نکته: appId را درستی‌سنجی کنید و مطمئن شوید برنامه در سخت‌افزار هدف پشتیبانی می‌شود.
  • armFailure : <device(s)> مسلح نشد.
  • armLevelNeeded : مطمئن نیستم که سطح <دستگاه(ها)> را روی چه سطحی تنظیم کنم. بگویید «Set <device(s)> to <low security >‎» (دستگاه(ها) را روی<امنیت پایین> تنظیم کن) یا «Set <device(s)> to <high security >‎» (دستگاه(ها) را روی<امنیت بالا> تنظیم کن)
  • authFailure : به‌نظر می‌رسد نمی‌توانم به <device(s)> دسترسی پیدا کنم. برنامه را بررسی کنید تا مطمئن شوید <device/devices> به‌طور کامل راه‌اندازی شده <is/are>.
  • bagFull : <دستگاه(ها)> <کیف/کیف‌ها> <پر است/پر هستند>. لطفاً <آن/آن‌ها> را خالی کنید و دوباره امتحان کنید.
  • belowMinimumLightEffectsDuration : این مقدار کمتر از حداقل مدت ۵ دقیقه است. لطفاً دوباره امتحان کنید.
  • belowMinimumTimerDuration : نمی‌توانم <device(s)> را برای چنین زمان کوتاهی تنظیم کنم. لطفاً دوباره امتحان کنید.
  • binFull : <device(s)> <has/have> <a full bin/full bins>.
  • cancelArmingRestricted : متأسفانه نتوانستم مسلح کردن <device(s)> را لغو کنم.
  • cancelTooLate : متأسفانه برای لغو کردن خیلی دیر است. به‌جای آن از <دستگاه(ها)> یا برنامه استفاده کنید.
  • channelSwitchFailed : متأسفانه، نتوانستیم به کانال <نام کانال> بروید. لطفاً بعداً دوباره امتحان کنید. نکته: نام‌ها/شماره‌های کانال و وضعیت اشتراک کاربر را درستی‌سنجی کنید.
  • 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> و به کمک شما <need(s)>.
  • deviceAtExtremeTemperature : <device(s)> <is/are> at <an extreme temperature/extreme temperatures>.
  • deviceBusy : متأسفانه، به‌نظر می‌رسد <device(s)> درحال انجام کاری است.
  • deviceCharging : متأسفانه به‌نظر می‌رسد <device(s)> نمی‌تواند این کار را انجام دهد زیرا (ha_shared.ItsTheyre size=$item.devices.total_device_count) درحال شارژ است.
  • deviceClogged : متأسفانه به‌نظر می‌رسد <دستگاه(ها)> مسدود شده است.
  • deviceCurrentlyDispensing : درحال‌حاضر<device(s)> درحال توزیع چیزی است.
  • deviceDoorOpen : درب <device(s)> باز است. لطفاً آن را ببندید و دوباره امتحان کنید.
  • deviceHandleClosed : دستورکار در <دستگاه(ها)> بسته است. لطفاً آن را باز کنید و دوباره امتحان کنید.
  • deviceJammingDetected : <دستگاه(ها)> <مسدود شده است/مسدود شده‌اند>.
  • 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 : دستگاه(ها) آماده نیست(ند).
  • deviceStuck : <device(s)> <is/are> stuck and needs your help.
  • deviceTampered : <device(s)> <has/have> been tampered with.
  • deviceThermalShutdown : متأسفانه به‌نظر می‌رسد <device(s)> به‌دلیل دمای بسیار بالا خاموش شده است.
  • directResponseOnlyUnreachable : <device(s)> از کنترل از دور پشتیبانی <doesn't/don't> می‌کند.
  • disarmFailure : <device(s)> خلع سلاح نشد.
  • discreteOnlyOpenClose : متأسفانه <device(s)> فقط می‌تواند کاملاً باز یا بسته شود.
  • dispenseAmountAboveLimit : <دستگاه(ها)> نمی‌تواند چنین مقدار زیادی را توزیع کند.
  • dispenseAmountBelowLimit : <دستگاه(ها)> نمی‌تواند چنین مقدار کمی را توزیع کند.
  • 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)> از این قابلیت پشتیبانی <نمی‌کند/نمی‌کنند>. نکته: مطمئن شوید پاسخ SYNC قابلیت‌های دستگاه را به‌درستی منعکس کند.
  • genericDispenseNotSupported : باید بدانم چه چیزی می‌خواهید توزیع شود. لطفاً دوباره با نام مورد امتحان کنید.
  • hardError : متأسفانه مشکلی پیش آمد و نمی‌توانم دستگاه خانه‌تان را کنترل کنم.
  • hardError : متأسفانه مشکلی پیش آمد و نمی‌توانم دستگاه خانه‌تان را کنترل کنم.
  • inAutoMode : <device(s)> <is/are> درحال‌حاضر روی حالت خودکار تنظیم شده است. برای تغییر دما، باید <it/them> را به حالت دیگری ببرید.
  • inAwayMode : <device(s)> <is/are> درحال‌حاضر روی حالت دور از خانه تنظیم شده است. برای کنترل کردن دماپا، باید آن را به‌صورت دستی بااستفاده از برنامه Nest در تلفن، رایانه لوحی، یا رایانه به حالت خانه تغییر دهید.
  • inDryMode : <device(s)> <is/are> currently set to dry mode. برای تغییر دما، باید <it/them> را به حالت دیگری ببرید.
  • inEcoMode : <device(s)> <is/are> currently set to eco mode. برای تغییر دما، باید <it/them> را به حالت دیگری ببرید.
  • inFanOnlyMode : <device(s)> <is/are> درحال‌حاضر روی حالت فقط طرفداران تنظیم شده است. برای تغییر دما، باید <it/them> را به حالت دیگری ببرید.
  • inHeatOrCool : <device(s)> در حالت گرمایش/ سرمایش نیست.
  • inHumidifierMode : <device(s)> درحال‌حاضر روی حالت رطوبت‌ساز تنظیم شده است. برای تغییر دما، باید <it/them> را به حالت دیگری ببرید.
  • inOffMode : <device(s)> درحال‌حاضر خاموش است. برای تغییر دما، باید <it/them> را به حالت دیگری تغییر دهید.
  • inPurifierMode : <device(s)> <is/are> درحال‌حاضر روی حالت تصفیه‌کننده تنظیم شده است. برای تغییر دما، باید <it/them> را به حالت دیگری ببرید.
  • inSleepMode : <device(s)> <is/are> در حالت خواب است. لطفاً بعداً دوباره امتحان کنید.
  • inSoftwareUpdate : <device(s)> <is/are> currently in a software update.
  • lockFailure : <device(s)> قفل نشد. نکته: گیر کردن فیزیکی، کم بودن شارژ، یا خرابی موتور سخت‌افزار قفل را بررسی کنید.
  • lockedState : <device(s)> درحال‌حاضر قفل است/هستند.
  • lockedToRange : این دما خارج از محدوده قفل‌شده در <device(s)> است.
  • lowBattery : <device(s)> <has/have> low battery.
  • maxSettingReached : <device(s)> <is/are> already set to the highest setting.
  • maxSpeedReached : <device(s)> <is/are> already set to the maximum speed.
  • minSettingReached : <device(s)> <is/are> already set to the lowest setting.
  • minSpeedReached : <device(s)> <is/are> ازقبل روی حداقل سرعت تنظیم شده است.
  • monitoringServiceConnectionLost : <device(s)> <has/have> lost <its/their> connection to the monitoring service.
  • needsAttachment : متأسفانه به‌نظر می‌رسد <device(s)> پیوست موردنیاز را ندارد. لطفاً آن را جایگزین کنید و دوباره امتحان کنید.
  • needsBin : متأسفانه به‌نظر می‌رسد <device(s)> <is/are> فاقد سطل زباله است. لطفاً آن را جایگزین کنید و دوباره امتحان کنید.
  • needsPads : <دستگاه(ها)> <به> پد جدید نیاز دارد.
  • needsSoftwareUpdate : <device(s)> <need(s)> به‌روزرسانی نرم‌افزار.
  • needsWater : <device(s)> <need(s)> water.
  • networkProfileNotRecognized : متأسفانه «<network profile>» را در <device(s)> تشخیص نمی‌دهم. نکته: رشته نام نمایه را بررسی کنید تا با نمایه‌های پشتیبانی‌شده در پاسخ «همگام‌سازی» مطابقت داشته باشد.
  • networkSpeedTestInProgress : درحال آزمایش <سرعت/سرعت‌ها> <شبکه> هستم.
  • noAvailableApp : متأسفانه به‌نظر می‌رسد <app name> دردسترس نیست.
  • noAvailableChannel : متأسفانه، به‌نظر می‌رسد کانال <channel name> دردسترس نیست.
  • noChannelSubscription : متأسفانه درحال‌حاضر در کانال <channel name> مشترک نیستید.
  • noTimerExists : متأسفانه به‌نظر می‌رسد هیچ زمان‌سنجی در <دستگاه(ها)> تنظیم نشده است.
  • notSupported : متأسفانه این حالت برای <دستگاه(ها)> دردسترس نیست.
  • obstructionDetected : <دستگاه(ها)> مانعی را تشخیص داد.
  • آفلاین ، deviceOffline : متأسفانه به‌نظر می‌رسد <device(s)> درحال‌حاضر دردسترس نیست.
  • onRequiresMode : لطفاً مشخص کنید کدام حالت را می‌خواهید روشن کنید.
  • passphraseIncorrect : متأسفیم، به‌نظر می‌رسد این پین اشتباه است.
  • percentOutOfRange : متأسفانه نمی‌توانم <دستگاه(ها)> را روی <درصد> تنظیم کنم.
  • pinIncorrect : (passphraseIncorrect)
  • rainDetected : <device(s)> را باز نکردم چون باران شناسایی شد.
  • rangeTooClose : این دماها برای محدوده «گرمایش- سرمایش» <device(s)> خیلی نزدیک است. دماهایی را انتخاب کنید که فاصله بیشتری داشته باشند.
  • relinkRequired : متأسفانه، به‌نظر می‌رسد مشکلی در حسابتان پیش آمده است. لطفاً از Google Home یا «برنامه دستیار» برای پیوند مجدد <device(s)> استفاده کنید. نکته: مطمئن شوید که سرورتان وقتی کد بازآوری برای همیشه نامعتبر می‌شود این کد را برمی‌گرداند.
  • remoteSetDisabled :
    • پارامتر اختیاری errorCodeReason
    • currentlyArmed - متأسفانه چون امنیت ازقبل فعال است، برای ایجاد هرگونه تغییر باید از <device(s)> یا برنامه استفاده کنید.
    • ‫remoteUnlockNotAllowed - متأسفانه نمی‌توانم <device(s)> را از دور باز کنم.
    • ‫remoteControlOff - این کنش درحال‌حاضر غیرفعال است. لطفاً کنترل از راه دور را در <device(s)> فعال کنید و دوباره امتحان کنید.
    • childSafetyModeActive - این کنش در <device(s)> درحالی‌که حالت ایمنی کودک فعال است غیرفعال است.
  • roomsOnDifferentFloors : <دستگاه(ها)> نمی‌تواند به آن اتاق‌ها دسترسی پیدا کند زیرا در طبقه‌های مختلف قرار دارند.
  • 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)> <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 : نتوانستم <device(s)> را پیدا کنم. نکته: اتصال‌پذیری محلی دستگاه (Wi-Fi/بلوتوث) را بررسی کنید.
  • unknownFoodPreset : <device(s)> از این پیش‌تنظیم غذا پشتیبانی نمی‌کند.
  • unlockFailure : <device(s)> قفل نشد. نکته: گیر کردن سخت‌افزار، باتری کم، یا وارد کردن پین نامعتبر را بررسی کنید.
  • unpausableState : درحال‌حاضر نمی‌توانید <device(s)> را موقتاً متوقف کنید.
  • userCancelled : ok
  • valueOutOfRange : <device(s)> نمی‌تواند روی این دما تنظیم شود.

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

وقتی دستگاه آفلاین است، باید <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 مناسب (برای دستگاه هدف) گزارش کنید.

برای مثال، اگر صفحه پرزگیر خشک‌کن پر باشد، کاربر همچنان می‌تواند خشک‌کن را روشن کند، اما بهتر است درباره این وضعیت به او هشدار دهید. به‌همین ترتیب، وقتی شارژ باتری دستگاهی کم است اما خالی نیست، همچنان می‌توانید فرمان اجرا کنید اما باید به او اطلاع دهید که شارژ باتری دستگاه کم است.

اگر فرمان به‌دلیل استثناها ناموفق باشد، وضعیت باید «استثناها» باشد، و استثناها باید بااستفاده از مشخصه 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"
      }
    }]
  }
}

استثنای غیرمسدودکننده (موفقیت‌آمیز) درباره دستگاه دیگری که از «گزارش وضعیت» استفاده می‌کند

این مثال برای فعال کردن سیستم امنیتی است: باشه، سیستم امنیتی فعال می‌شود. پنجره جلویی باز است.

{
  "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"
        }]
      }
    }]
  }
}

استثنای مسدودسازی درباره دستگاه دیگری که از «گزارش وضعیت» استفاده می‌کند

{
  "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 : <دستگاه(ها)> <مسدود شده است/مسدود شده‌اند>.
  • deviceMoved : <device(s)> <was/were> moved.
  • deviceOpen : <device(s)> <is/are> open.
  • deviceTampered : <device(s)> <has/have> been tampered with.
  • deviceUnplugged : <device(s)> <is/are> unplugged.
  • 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)> <is/are> currently bypassed.
  • lowBattery : <device(s)> <has/have> low battery.
  • motionDetected : <device(s)> <detect(s)> motion.
  • needsPads : <دستگاه(ها)> <به> پد جدید نیاز دارد.
  • needsSoftwareUpdate : <device(s)> <need(s)> به‌روزرسانی نرم‌افزار.
  • needsWater : <device(s)> <need(s)> water.
  • networkJammingDetected : اتصال شبکه خانگی به <device(s)> به‌درستی کار نمی‌کند.
  • noIssuesReported : <device(s)> مشکلی گزارش نکرده است.
  • اتاق‌ها در طبقه‌های مختلف : <دستگاه(ها)> نمی‌تواند به آن اتاق‌ها دسترسی پیدا کند زیرا در طبقه‌های مختلف هستند.
  • 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 : <دستگاه(ها)> نشت آب <تشخیص داد(ند)>.
</code{"online":></code{"online":>