Lỗi và ngoại lệ

Tài liệu này liệt kê các lỗi và ngoại lệ được hỗ trợ chính thức cho các thiết bị trong nhà. Vui lòng sử dụng các mã lỗi và ngoại lệ đã cho sau đây trong ý định câu trả lời hoặc trong thông báo nếu bạn đã triển khai tính năng này, vì vậy, Trợ lý Google sẽ cảnh báo người dùng cuối về các vấn đề liên quan đến trạng thái của lệnh hoặc thiết bị nhất định. Nếu câu trả lời có định dạng không chính xác hoặc errorCode, Trợ lý Google sẽ đưa ra cho người dùng một thông báo lỗi chung, ví dụ: "Rất tiếc, device hiện không hoạt động".

Lỗi

Bạn nên trả về mã lỗi khi có vấn đề khiến lệnh thực thi hoặc không thành công. Ví dụ: nếu khoá cửa bị kẹt và không mở được đã khoá hoặc đã mở khoá, thì hệ thống sẽ trả về lỗi về trạng thái này cho người dùng.

Bạn có thể đính kèm mã lỗi ở cấp thiết bị hoặc ở cấp toàn cầu. Ví dụ: nếu người dùng có nhiều đèn từ một nhà cung cấp và các đèn đó được điều khiển bằng một trung tâm, khi người dùng yêu cầu tắt tất cả đèn, nhà cung cấp có thể trả lại lỗi ở cấp thiết bị nếu đèn đơn lẻ không kết nối mạng, hoặc lỗi ở cấp độ toàn cầu nếu toàn bộ thiết bị trung tâm đang không kết nối mạng và không thể điều khiển đèn nào. Nếu tất cả thiết bị không có kết nối mạng, nên không có sự khác biệt giữa việc sử dụng cấp độ toàn cầu hay cấp độ thiết bị . Khi thiết bị không có kết nối mạng, bạn nên báo cáo trạng thái {"online": false}reportState ngay cả khi bạn trả về Mã lỗi deviceOffline.

Tóm tắt:

  • Lỗi cấp toàn cầu: tất cả thiết bị trong phản hồi đều có cùng một lỗi
  • Lỗi cấp cục bộ: phản hồi hỗn hợp với các trường hợp lỗi và thành công

Lỗi cấp toàn cầu

Đoạn mã JSON sau đây cho biết cách bạn trả về lỗi cấp độ toàn cầu trong QUERY hoặc EXECUTE phản hồi.

Một ví dụ về lỗi cấp độ toàn cầu deviceOffline do trung tâm này là ngoại tuyến:

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "errorCode": "deviceOffline",
    "status" : "ERROR"
  }
}

Một ví dụ về lỗi cấp độ toàn cầu inSoftwareUpdate do trung tâm này là đang cập nhật:

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "errorCode": "inSoftwareUpdate",
    "status" : "ERROR"
  }
}

Lỗi ở cấp thiết bị

Phản hồi QUERY

Đoạn mã JSON sau đây minh hoạ cách bạn trả về các lỗi ở cấp thiết bị trong Phản hồi QUERY.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "devices": {
      "device-id-1": {
        "errorCode": "deviceOffline",
        "status" : "ERROR"
      },
      "device-id-2": {
        "errorCode": "deviceOffline",
        "status" : "ERROR"
      }
    }
  }
}

EXECUTE phản hồi

Đoạn mã JSON sau đây minh hoạ cách bạn trả về các lỗi ở cấp thiết bị trong EXECUTE phản hồi.

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

Thông báo có lỗi

Thông báo chủ động

Đoạn mã JSON sau đây minh hoạ cách bạn báo cáo lỗi ở cấp thiết bị trong thông báo chủ động.

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

Câu trả lời nối tiếp

Đoạn mã JSON sau đây minh hoạ cách bạn báo cáo lỗi ở cấp thiết bị trong câu trả lời nối tiếp.

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

Danh sách lỗi

Các lỗi sau sẽ tạo TTS được liên kết trên thiết bị.

  • aboveMaximumLightEffectsDuration : Thời lượng tối đa là 1 giờ. Vui lòng thử lại.
  • aboveMaximumTimerDuration : Tôi chỉ có thể thiết lập <device(s)> trong tối đa <time khoảng>
  • actionNotAvailable : Rất tiếc, có vẻ như tôi chưa thể làm việc đó ngay lúc này.
  • actionUnavailableWhileRunning : &lt;device(s)&gt; &lt;is/are&gt; hiện đang chạy, nên tôi không thể thực hiện bất kỳ thay đổi nào.
  • alreadyArmed : &lt;device(s)&gt; &lt;is/are&gt; đã bật chuông báo động.
  • alreadyAtMax : &lt;device(s)&gt; &lt;is/are&gt; đã được đặt ở nhiệt độ cao nhất.
  • alreadyAtMin : &lt;device(s)&gt; &lt;is/are&gt; đã được đặt ở nhiệt độ thấp nhất.
  • alreadyClosed : &lt;device(s)&gt; &lt;is/are&gt; đã đóng.
  • alreadyDisarmed : &lt;device(s)&gt; &lt;is/are&gt; đã tắt chuông báo động.
  • alreadyDocked : &lt;device(s)&gt; &lt;is/are&gt; đã được gắn vào đế sạc.
  • alreadyInState : &lt;device(s)&gt; &lt;is/are&gt; đã ở trạng thái đó.
  • alreadyLocked : &lt;device(s)&gt; &lt;is/are&gt; đã khoá.
  • alreadyOff : &lt;device(s)&gt; &lt;is/are&gt; đã tắt.
  • alreadyOn : &lt;device(s)&gt; &lt;is/are&gt; đã bật.
  • alreadyOpen : &lt;device(s)&gt; &lt;is/are&gt; đã mở.
  • alreadyPaused : &lt;device(s)&gt; &lt;is/are&gt; đã tạm dừng.
  • alreadyStarted : &lt;device(s)&gt; &lt;is/are&gt; đã bắt đầu.
  • alreadyStopped : &lt;device(s)&gt; &lt;is/are&gt; đã dừng lại.
  • alreadyUnlocked : &lt;device(s)&gt; &lt;is/are&gt; đã được mở khoá.
  • ambiguousZoneName : Rất tiếc, <device(s)> không thể xác định bạn muốn nói đến vùng nào. Hãy đảm bảo bạn đặt tên riêng biệt cho các vùng rồi thử lại.
  • amountAboveLimit : Đó là tính năng chưa từng có của <device(s)> có thể hỗ trợ bạn.
  • appLaunchFailed : Rất tiếc, không chạy được <tên ứng dụng> trên <device(s)>.
  • armFailure : &lt;device(s)&gt; không thể bật chuông báo động.
  • armLevelNeeded : Tôi không rõ nên đặt cấp độ nào cho <device(s)> sang. Hãy thử nói "Set <device(s)> (Đặt <thiết bị)> thành <bảo mật thấp>" hoặc "Set <device(s)> (Đặt <device(s)>) thành <độ bảo mật cao>"
  • authFailure : Có vẻ như tôi không thể kết nối với <device(s)>. Hãy thử kiểm tra ứng dụng để đảm bảo <device/devices> của bạn &lt;is/are&gt; thiết lập đầy đủ.
  • bagFull : &lt;device(s)&gt; &lt;has/have&gt; <túi đầy đủ/túi đầy đủ>. Vui lòng để trống <it/them> rồi thử lại.
  • belowMinimumLightEffectsDuration : Thời lượng này ít hơn thời lượng tối thiểu là 5 phút. Vui lòng thử lại.
  • belowMinimumTimerDuration : Tôi không thiết lập được <device(s)> trong một khoảng thời gian ngắn như vậy. Vui lòng thử lại.
  • binFull : &lt;device(s)&gt; &lt;has/have&gt; <thùng đầy/thùng đầy>.
  • cancelArmingRestricted : Rất tiếc, tôi không thể huỷ thao tác bật chuông báo động <device(s)>.
  • cancelTooLate : Rất tiếc, đã quá muộn để huỷ. Sử dụng <device(s)> hoặc ứng dụng.
  • channelSwitchFailed : Rất tiếc, không chuyển được sang kênh <channel name>. Vui lòng thử lại sau.
  • chargerIssue : Rất tiếc, có vẻ như <device(s)> &lt;has/have&gt; <vấn đề về bộ sạc/vấn đề về bộ sạc>.
  • commandInsertFailed : Không thể xử lý các lệnh cho <device(s)>.
  • deadBattery : <thiết bị> &lt;has/have&gt; <pin hết pin/pin hết>.
  • degreesOutOfRange : Độ bạn yêu cầu nằm ngoài phạm vi của <device(s)>.
  • deviceAlertNeedsAssistance : &lt;device(s)&gt; &lt;has/have&gt; một cảnh báo đang hoạt động và <need(s)> sự hỗ trợ của bạn.
  • deviceAtExtremeTemperature : <thiết bị> &lt;is/are&gt; ở <nhiệt độ cực cao/nhiệt độ cực cao>.
  • deviceBusy : Rất tiếc, có vẻ như <device(s)> hiện đang làm gì đó.
  • deviceCharging : Rất tiếc, có vẻ như <device(s)> không làm được việc đó vì (ha_shared.ItsWhore size=$item.devices.total_device_count) đang sạc.
  • deviceClogged : Rất tiếc, có vẻ như <device(s)> đang bị tắc.
  • deviceCurrentlyDispensing : &lt;device(s)&gt; đang phân phối gì đó ngay lúc này.
  • deviceDoorOpen : Cửa đang mở trên <device(s)>. Vui lòng đóng cửa rồi thử lại.
  • deviceHandleClosed : Nút điều khiển này đã đóng trên <device(s)>. Vui lòng mở rồi thử lại.
  • deviceJammingDetected : &lt;device(s)&gt; &lt;is/are&gt; bị mắc kẹt.
  • deviceLidOpen : Nắp đang mở trên <device(s)>. Vui lòng đóng cửa rồi thử lại.
  • deviceNeedsRepair : &lt;device(s)&gt; &lt;need(s)&gt; cần sửa chữa. Vui lòng liên hệ với đại lý bảo dưỡng tại địa phương.
  • deviceNotDocked : Rất tiếc, có vẻ như <device(s)> <isn't/not> (không phải là/không có> được gắn vào đế sạc. Vui lòng gắn <tên/chúng> rồi thử lại.
  • deviceNotFound : &lt;device(s)&gt; <is/are>không có sẵn. Bạn nên thử đặt <it/them> lại.
  • deviceNotMounted : Rất tiếc, có vẻ như <device(s)> không thể làm việc đó vì <it/they> <is/are>chưa được gắn.
  • deviceNotReady : &lt;device(s)&gt; <is/are>chưa sẵn sàng.
  • deviceStuck : &lt;device(s)&gt; &lt;is/are&gt; gặp khó khăn và cần bạn trợ giúp.
  • deviceTampered : <thiết bị> &lt;has/have&gt; đã bị can thiệp.
  • deviceThermalShutdown : Rất tiếc, có vẻ như <device(s)> tắt do nhiệt độ khắc nghiệt.
  • directResponseOnlyUnreachable : &lt;device(s)&gt; <không/không> hỗ trợ điều khiển từ xa.
  • disarmFailure : &lt;device(s)&gt; không thể tắt chuông báo động.
  • discreteOnlyOpenClose : Rất tiếc, <device(s)> chỉ có thể mở hoặc đóng hoàn toàn.
  • dispenseAmountAboveLimit : &lt;device(s)&gt; không thể phân phối một số lượng lớn như vậy.
  • dispenseAmountBelowLimit : &lt;device(s)&gt; không thể phân phối một lượng nhỏ như vậy.
  • dispenseAmountRemainingExceeded : &lt;device(s)&gt; không có đủ <dispense item> để làm điều đó.
  • dispenseFractionalAmountNotSupported : &lt;device(s)&gt; không thể phân phối số phân số của <phân phối mục>.
  • dispenseFractionalUnitNotSupported : &lt;device(s)&gt; không hỗ trợ phân số của đơn vị đó cho <phân phối mục>.
  • dispenseUnitNotSupported : &lt;device(s)&gt; không hỗ trợ đơn vị đó cho <dispense item>.
  • doorClosedTooLong : Đã lâu rồi bạn chưa mở cửa trên <device(s)> đã được mở. Vui lòng mở cửa, đảm bảo bạn đã cho thứ gì đó vào trong lò, sau đó thử lại.
  • emergencyHeatOn : &lt;device(s)&gt; &lt;is/are&gt; ở Chế độ sưởi ấm khẩn cấp, nên <it/they> sẽ phải điều chỉnh bằng tay.
  • faultyBattery : <thiết bị> &lt;has/have&gt; <pin bị hỏng/pin>.
  • floorUnreachable : &lt;device(s)&gt; không thể vào phòng đó. Vui lòng di chuyển <bài viết> đến đúng tầng rồi thử lại.
  • functionNotSupported : Trên thực tế, <device(s)> <không/không> hỗ trợ chức năng đó.
  • genericDispenseNotSupported : Tôi cần biết bạn muốn phân phối gì. Vui lòng thử lại kèm theo tên của mặt hàng đó.
  • hardError : Rất tiếc, đã xảy ra lỗi nên tôi không thể điều khiển thiết bị trong nhà bạn.
  • hardError : Rất tiếc, đã xảy ra lỗi nên tôi không thể điều khiển thiết bị trong nhà bạn.
  • inAutoMode : &lt;device(s)&gt; &lt;is/are&gt; hiện được đặt ở chế độ tự động. Để thay đổi nhiệt độ, bạn cần phải chuyển đổi <it/chúng> sang một chế độ khác.
  • inAwayMode : &lt;device(s)&gt; &lt;is/are&gt; hiện được đặt ở chế độ vắng mặt. Để điều khiển máy điều nhiệt, bạn cần phải chuyển máy điều nhiệt sang chế độ ở nhà theo cách thủ công bằng ứng dụng Nest trên điện thoại, máy tính bảng hoặc máy tính.
  • inDryMode : &lt;device(s)&gt; &lt;is/are&gt; hiện được đặt ở chế độ làm khô. Để thay đổi nhiệt độ, bạn cần phải chuyển đổi <it/chúng> sang một chế độ khác.
  • inEcoMode : &lt;device(s)&gt; &lt;is/are&gt; đang đặt ở chế độ tiết kiệm năng lượng. Để thay đổi nhiệt độ, bạn cần phải chuyển đổi <it/chúng> sang một chế độ khác.
  • inFanOnlyMode : &lt;device(s)&gt; &lt;is/are&gt; hiện được đặt ở chế độ chỉ quạt. Để thay đổi nhiệt độ, bạn cần phải chuyển đổi <it/chúng> sang một chế độ khác.
  • inHeatOrCool : &lt;device(s)&gt; <đang/không ở chế độ sưởi ấm/làm mát.
  • inHumidifierMode : &lt;device(s)&gt; &lt;is/are&gt; đang ở chế độ tạo ẩm. Để thay đổi nhiệt độ, bạn cần phải chuyển đổi <it/chúng> sang một chế độ khác.
  • inOffMode : &lt;device(s)&gt; &lt;is/are&gt; hiện đang tắt. Để thay đổi nhiệt độ, bạn cần phải chuyển đổi <it/chúng> sang một chế độ khác.
  • inPurifierMode : &lt;device(s)&gt; &lt;is/are&gt; đang đặt ở chế độ lọc không khí. Để thay đổi nhiệt độ, bạn cần phải chuyển đổi <it/chúng> sang một chế độ khác.
  • inSleepMode : &lt;device(s)&gt; &lt;is/are&gt; ở chế độ ngủ. Vui lòng thử lại sau.
  • inSoftwareUpdate : <thiết bị> &lt;is/are&gt; hiện đang cập nhật phần mềm.
  • lockFailure : &lt;device(s)&gt; Không thể khoá.
  • lockedState : &lt;device(s)&gt; &lt;is/are&gt; đang bị khoá.
  • lockedToRange : Nhiệt độ đó nằm ngoài phạm vi bị khoá trên <device(s)>.
  • lowBattery : <thiết bị> &lt;has/have&gt; pin yếu.
  • maxSettingReached : &lt;device(s)&gt; &lt;is/are&gt; đã được đặt ở chế độ cài đặt cao nhất.
  • maxSpeedReached : &lt;device(s)&gt; &lt;is/are&gt; tốc độ tối đa được đặt thành tốc độ tối đa.
  • minSettingReached : &lt;device(s)&gt; &lt;is/are&gt; đã được đặt ở chế độ cài đặt thấp nhất.
  • minSpeedReached : &lt;device(s)&gt; &lt;is/are&gt; tốc độ tối thiểu đã được đặt thành tốc độ tối thiểu.
  • monitoringServiceConnectionLost : &lt;device(s)&gt; &lt;has/have&gt; đã mất <it/Họ> kết nối với dịch vụ giám sát.
  • needsAttachment : Rất tiếc, có vẻ như <device(s)> &lt;is/are&gt; thiếu tệp đính kèm bắt buộc. Vui lòng thay pin rồi thử lại.
  • needsBin : Rất tiếc, có vẻ như <device(s)> &lt;is/are&gt; thiếu thùng. Vui lòng thay pin rồi thử lại.
  • needsPads : &lt;device(s)&gt; &lt;need(s)&gt; miếng đệm mới.
  • needsSoftwareUpdate : <thiết bị> &lt;need(s)&gt; bản cập nhật phần mềm.
  • needsWater : &lt;device(s)&gt; &lt;need(s)&gt; nước.
  • networkProfileNotRecognized : Rất tiếc, tôi không nhận ra "<network profile>" trên <device(s)>.
  • networkSpeedTestInProgress : Tôi đang thử nghiệm <network> <speed/speeds>> .
  • noAvailableApp : Rất tiếc, có vẻ như là <tên ứng dụng> không có.
  • noAvailableChannel : Rất tiếc, có vẻ như kênh <channel name> không có.
  • noChannelSubscription : Rất tiếc, bạn chưa đăng ký kênh <channel name> ở thời điểm hiện tại.
  • noTimerExists : Rất tiếc, có vẻ như bạn chưa đặt đồng hồ hẹn giờ nào trên <device(s)>.
  • notSupported : Rất tiếc, <device(s)> không thể sử dụng chế độ đó.
  • obstructionDetected : &lt;device(s)&gt; đã phát hiện thấy một vật cản.
  • ngoại tuyến , thiết bị Ngoại tuyến : Rất tiếc, có vẻ như <device(s)> <is/are>hiện không truy cập được.
  • onRequiresMode : Vui lòng chỉ định chế độ bạn muốn bật.
  • passphraseIncorrect : Rất tiếc, có vẻ như mã PIN đó không chính xác.
  • percentOutOfRange : Rất tiếc, tôi không thể thiết lập <device(s)> thành <percent>.
  • pinIncorrect : (passphraseIncorrect)
  • rainDetected : Tôi không mở <device(s)> vì phát hiện thấy mưa.
  • rangeTooClose : Giá trị này quá gần với phạm vi Sưởi ấm – Làm mát của <device(s)>. Vui lòng chọn nhiệt độ cách xa nhau hơn.
  • relinkRequired : Rất tiếc, có vẻ như đã xảy ra lỗi với tài khoản của bạn. Vui lòng dùng ứng dụng Google Home hoặc Trợ lý để liên kết lại <device(s)>.
  • remoteSetDisabled :
    • Tham số không bắt buộc errorCodeReason
    • currentlyArmedRất tiếc, vì chế độ bảo mật đã được bật nên bạn cần sử dụng <device(s)> hoặc ứng dụng để thực hiện thay đổi bất kỳ.
    • remoteUnlockNotAllowedRất tiếc, tôi không thể mở khoá <device(s)> từ xa.
    • remoteControlOffThao tác đó hiện đang bị vô hiệu hoá. Vui lòng bật điều khiển từ xa trên <device(s)> rồi thử lại.
    • childSafetyModeActiveThao tác đó bị vô hiệu hoá đối với <device(s)> khi chế độ an toàn cho trẻ em đang hoạt động.
  • roomsOnDifferentFloors : &lt;device(s)&gt; không thể vào những phòng đó vì những phòng đó ở các tầng khác nhau.
  • safetyShutOff : &lt;device(s)&gt; &lt;is/are&gt; ở Chế độ Tắt an toàn, nên bạn sẽ phải điều chỉnh <it/Họ> bằng tay.
  • sceneCannotBeApplied : Rất tiếc, <device(s)> Không thể áp dụng.
  • securityRestriction : &lt;device(s)&gt; &lt;has/have&gt; hạn chế về bảo mật.
  • softwareUpdateNotAvailable : Rất tiếc, <device(s)> hiện chưa có bản cập nhật phần mềm nào.
  • startRequiresTime : Để làm được việc đó, bạn cần cho tôi biết bạn muốn chạy <device(s)> trong bao lâu.
  • stillCoolingDown : &lt;device(s)&gt; &lt;is/are&gt; vẫn đang hạ nhiệt.
  • stillWarmingUp : &lt;device(s)&gt; &lt;is/are&gt; vẫn đang khởi động.
  • streamUnavailable : Rất tiếc, có vẻ như luồng dữ liệu này hiện không phát trên <device(s)>.
  • streamUnplayable : Rất tiếc, tôi không phát được luồng dữ liệu đó trên <device(s)> ở thời điểm hiện tại.
  • tankEmpty : &lt;device(s)&gt; &lt;has/have&gt; <bốc rỗng/bể trống>. Vui lòng điền <it/them> rồi thử lại.
  • targetAlreadyReached : Rất tiếc, có vẻ như đó là nhiệt độ hiện tại.
  • timerValueOutOfRange : &lt;device(s)&gt; không thể đặt trong khoảng thời gian đó.
  • tooManyFailedAttempts : Rất tiếc, bạn đã nhập sai quá nhiều lần. Vui lòng chuyển đến ứng dụng của thiết bị để hoàn tất thao tác đó.
  • transientError : Rất tiếc, đã xảy ra lỗi khi điều khiển <device(s)>. Vui lòng thử lại.
  • turnedOff , thiết bịĐã tắt : &lt;device(s)&gt; &lt;is/are&gt; tắt ngay bây giờ.
  • unableToLocateDevice : Tôi không tìm được <device(s)>.
  • unknownFoodPreset : &lt;device(s)&gt; không hỗ trợ chế độ nấu đó.
  • unlockFailure : &lt;device(s)&gt; Không thể mở khoá.
  • unpausableState : &lt;device(s)&gt; không thể tạm dừng ngay bây giờ.
  • userCancelled : ok
  • valueOutOfRange : &lt;device(s)&gt; không thể đặt ở nhiệt độ đó.

Ngoại lệ

Bạn nên trả về một ngoại lệ khi xảy ra vấn đề hoặc cảnh báo liên quan đến một . Lệnh này có thể thành công hoặc không thành công.

Nếu lệnh thành công (trạng thái = "FAILED"), báo cáo ngoại lệ sử dụng trait StatusReport (đối với các thiết bị không phải là mục tiêu), hoặc bằng cách trả về một exceptionCode thích hợp (cho thiết bị mục tiêu).

Ví dụ: nếu màn hình tìm lỗi mã nguồn của máy sấy đã đầy, người dùng vẫn có thể khởi động nhưng bạn nên cảnh báo cho trẻ về trạng thái này. Tương tự, khi một thiết bị sắp hết pin và chưa hết pin, bạn vẫn có thể thực thi lệnh nhưng nên cho họ biết rằng pin thiết bị sắp hết.

Nếu lệnh không thành công do ngoại lệ, trạng thái sẽ là "EXCEPTIONS", và các trường hợp ngoại lệ phải được báo cáo bằng cách dùng trat StatusReport.

Ngoại lệ không chặn (THÀNH CÔNG) về thiết bị mục tiêu

Ví dụ sau đây là về việc khoá cửa:

Khoá cửa trước sắp hết pin. Tôi đang khoá cửa trước.

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

Ngoại lệ không chặn (HUỶ) về thiết bị khác sử dụng StatusReport

Ví dụ sau đây minh hoạ cách bật hệ thống an ninh: Tôi đang bật hệ thống an ninh. Cửa trước đang mở.

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

Chặn ngoại lệ về thiết bị khác bằng cách sử dụng 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"
          }
        ]
      }
    }
  }
}

Danh sách ngoại lệ

Các trường hợp ngoại lệ sau sẽ tạo TTS được liên kết trên thiết bị.

  • bagFull : &lt;device(s)&gt; &lt;has/have&gt; <túi đầy đủ/túi đầy đủ>. Vui lòng để trống <it/them> rồi thử lại.
  • binFull : &lt;device(s)&gt; &lt;has/have&gt; <thùng đầy/thùng đầy>.
  • carbonMonoxideDetected : Phát hiện thấy có khí CO trong <tên nhà>.
  • deviceAtExtremeTemperature : <thiết bị> &lt;is/are&gt; ở <nhiệt độ cực cao/nhiệt độ cực cao>.
  • deviceJammingDetected : &lt;device(s)&gt; &lt;is/are&gt; bị mắc kẹt.
  • deviceMoved : &lt;device(s)&gt; &lt;was/were&gt; đã chuyển đi.
  • deviceOpen : <thiết bị> &lt;is/are&gt; mở.
  • deviceTampered : <thiết bị> &lt;has/have&gt; đã bị can thiệp.
  • deviceUnplugged : <thiết bị> &lt;is/are&gt; đã rút phích cắm.
  • floorUnreachable : &lt;device(s)&gt; không thể vào phòng đó. Vui lòng di chuyển <bài viết> đến đúng tầng rồi thử lại.
  • hardwareFailure : <thiết bị> &lt;has/have&gt; sự cố phần cứng.
  • inSoftwareUpdate : <thiết bị> &lt;is/are&gt; hiện đang cập nhật phần mềm.
  • isBypassed : &lt;device(s)&gt; &lt;is/are&gt; hiện đang bị bỏ qua.
  • lowBattery : <thiết bị> &lt;has/have&gt; pin yếu.
  • motionDetected : <thiết bị> &lt;detect(s)&gt; chuyển động.
  • needsPads : &lt;device(s)&gt; &lt;need(s)&gt; miếng đệm mới.
  • needsSoftwareUpdate : <thiết bị> &lt;need(s)&gt; bản cập nhật phần mềm.
  • needsWater : &lt;device(s)&gt; &lt;need(s)&gt; nước.
  • networkJammingDetected : kết nối mạng gia đình với <device(s)> không hoạt động đúng cách.
  • noIssuesReported : &lt;device(s)&gt; không báo cáo vấn đề nào.
  • roomsOnDifferentFloors : &lt;device(s)&gt; không thể vào những phòng đó vì những phòng đó ở các tầng khác nhau.
  • runCycleFinished : &lt;device(s)&gt; &lt;has/have&gt; đã chạy xong.
  • securityRestriction : &lt;device(s)&gt; &lt;has/have&gt; hạn chế về bảo mật.
  • smokeDetected : Phát hiện có khói trong <tên nhà>.
  • tankEmpty : &lt;device(s)&gt; &lt;has/have&gt; <bốc rỗng/bể trống>. Vui lòng điền <it/them> rồi thử lại.
  • usingCellularBackup : <thiết bị> &lt;is/are&gt; bằng tính năng sao lưu qua mạng di động.
  • waterLeakDetected : <thiết bị> &lt;detect(s)&gt; sự cố rò rỉ nước.