ข้อผิดพลาดและข้อยกเว้น

เอกสารนี้แสดงข้อผิดพลาดและข้อยกเว้นที่รองรับอย่างเป็นทางการสำหรับอุปกรณ์สมาร์ทโฮม โปรดใช้ข้อผิดพลาดและรหัสข้อยกเว้นเหล่านี้ในการตอบสนองของ Intent หรือในการแจ้งเตือนหากคุณติดตั้งใช้งานแล้ว เพื่อให้ Google Assistant แจ้งผู้ใช้ปลายทางเกี่ยวกับปัญหาที่เกี่ยวข้องกับคําสั่งหรือสถานะของอุปกรณ์ หากคำตอบมีการจัดรูปแบบไม่ถูกต้องหรือมี errorCode Google Assistant จะแสดงข้อความแสดงข้อผิดพลาดทั่วไปแก่ผู้ใช้ เช่น "ขออภัย device ไม่พร้อมให้บริการในขณะนี้"

ข้อผิดพลาด

คุณควรแสดงรหัสข้อผิดพลาดเมื่อปัญหาทําให้คําขอเรียกใช้หรือคําขอค้นหาไม่สําเร็จ เช่น หากล็อกประตูติดขัดและล็อกหรือปลดล็อกไม่ได้ ระบบควรแสดงข้อผิดพลาดเกี่ยวกับสถานะนี้แก่ผู้ใช้

คุณสามารถแนบรหัสข้อผิดพลาดได้ในระดับอุปกรณ์หรือระดับส่วนกลาง ตัวอย่างเช่น หากผู้ใช้มีหลอดไฟหลายดวงจากผู้ให้บริการรายเดียวและควบคุมด้วยฮับ เมื่อผู้ใช้ขอให้ปิดหลอดไฟทั้งหมด ผู้ให้บริการอาจแสดงข้อผิดพลาดระดับอุปกรณ์หากหลอดไฟดวงเดียวออฟไลน์อยู่ หรือแสดงข้อผิดพลาดระดับระบบหากฮับทั้งหมดออฟไลน์อยู่และควบคุมหลอดไฟไม่ได้ หากอุปกรณ์ทั้งหมดออฟไลน์อยู่ การใช้ข้อผิดพลาดระดับอุปกรณ์หรือระดับส่วนกลางก็ไม่แตกต่างกัน

เมื่ออุปกรณ์ออฟไลน์ คุณควรรายงาน {"online": false} ไปยังรายงานสถานะภายใน 5 นาทีหลังจากเห็นลักษณะการทำงานของอุปกรณ์

โดยสรุป

  • ข้อผิดพลาดระดับระบบ: อุปกรณ์ทั้งหมดในการตอบกลับมีข้อผิดพลาดเดียวกัน
  • ข้อผิดพลาดระดับท้องถิ่น: การตอบกลับแบบผสมที่มีทั้งกรณีที่เกิดข้อผิดพลาดและกรณีที่สําเร็จ

ข้อผิดพลาดระดับส่วนกลาง

ข้อมูลโค้ด 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"
            }
          }
        }
      }
    }
  }
}

รายการข้อผิดพลาด

ข้อผิดพลาดต่อไปนี้จะสร้าง TTS ที่เชื่อมโยงในอุปกรณ์

  • aboveMaximumLightEffectsDuration : นานกว่าระยะเวลาสูงสุดที่ 1 ชั่วโมงแล้วนะ โปรดลองอีกครั้ง
  • 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)> <is/are> already set to the maximum temperature.
  • alreadyAtMin : <device(s)> <is/are> already set to the minimum temperature.
  • alreadyClosed : <device(s)> <is/are> closed already.
  • 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> locked already.
  • alreadyOff : <device(s)> <is/are> off already.
  • alreadyOn : <device(s)> <is/are> on already.
  • alreadyOpen : <device(s)> <is/are> open already.
  • alreadyPaused : <device(s)> <is/are> paused already.
  • alreadyStarted : <device(s)> <is/are> started already.
  • alreadyStopped : <device(s)> <is/are> stopped already.
  • alreadyUnlocked : <device(s)> <is/are> unlocked already.
  • ambiguousZoneName : ขออภัย <device(s)> ไม่รู้ว่าคุณหมายถึงโซนไหน โปรดตรวจสอบว่าโซนมีชื่อไม่ซ้ำกันและลองอีกครั้ง
  • amountAboveLimit : จำนวนเกินกว่าที่ <device(s)> จะรองรับ
  • appLaunchFailed : ขออภัย ไม่สามารถเปิด <ชื่อแอป> ใน <อุปกรณ์>
  • armFailure : เปิดระบบ <device(s)> ไม่ได้
  • armLevelNeeded : ฉันไม่แน่ใจว่าจะให้ตั้งค่า <device(s)> เป็นระดับไหน ลองพูดว่า "ตั้งค่า <อุปกรณ์> เป็น <การรักษาความปลอดภัยระดับต่ำ>" หรือ "ตั้งค่า <อุปกรณ์> เป็น <การรักษาความปลอดภัยระดับสูง>"
  • authFailure : ดูเหมือนจะสื่อสารกับ <device(s)> ไม่ได้ ลองตรวจสอบแอปเพื่อดูว่า <device/devices> <is/are> ตั้งค่าไว้ครบถ้วนแล้ว
  • bagFull : <device(s)> <has/have> <a full bag/full bags>. Please empty <it/them> and try again.
  • ด้านล่างระยะเวลาขั้นต่ำของเอฟเฟกต์แสง : สั้นกว่าระยะเวลาขั้นต่ำที่ 5 นาที โปรดลองอีกครั้ง
  • belowMinimumTimerDuration : ฉันตั้งค่า <device(s)> ให้สั้นขนาดนั้นไม่ได้ โปรดลองอีกครั้ง
  • binFull : <device(s)> <has/have> <a full bin/full bins>
  • cancelArmingRestricted : ขออภัย เรายกเลิกการตั้งอาวุธ <device(s)> ไม่ได้
  • cancelTooLate : ขออภัย ยกเลิกไม่ทันแล้ว ใช้ <device(s)> หรือแอปแทน
  • 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)> จะทำแบบนั้นไม่ได้เนื่องจาก (ha_shared.ItsTheyre size=$item.devices.total_device_count) กำลังชาร์จอยู่
  • deviceClogged : ขออภัย ดูเหมือนว่า <device(s)> จะอุดตัน
  • deviceCurrentlyDispensing : <device(s)> กำลังจ่ายอาหารอยู่ตอนนี้
  • deviceDoorOpen : ประตูของ <device(s)> เปิดอยู่ โปรดปิดแล้วลองอีกครั้ง
  • deviceHandleClosed : แฮนเดิลใน <device(s)> ถูกปิดอยู่ โปรดเปิดแฮนเดิลและลองอีกครั้ง
  • deviceJammingDetected : <device(s)> <is/are> jammed.
  • deviceLidOpen : ฝาของ <device(s)> เปิดอยู่ โปรดปิดฝาแล้วลองอีกครั้ง
  • deviceNeedsRepair : <device(s)> <need(s)> to be repaired. โปรดติดต่อตัวแทนจำหน่ายที่ให้บริการในพื้นที่
  • deviceNotDocked : ขออภัย ดูเหมือนว่า <device(s)> <isn't/aren't> ชาร์จอยู่ โปรดวาง <อุปกรณ์>เข้าแท่นชาร์จแล้วลองอีกครั้ง
  • deviceNotFound : <device(s)> <is/are>ไม่พร้อมใช้งาน คุณอาจต้องลองตั้งค่า <อุปกรณ์> อีกครั้ง
  • deviceNotMounted : ขออภัย ดูเหมือนว่า <device(s)> จะทำแบบนั้นไม่ได้เนื่องจาก <it/they> <is/are>n't mounted
  • deviceNotReady : <device(s)> <is/are>ไม่พร้อม
  • 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> 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 : <device(s)> ไปห้องนั้นไม่ได้ โปรดย้าย <อุปกรณ์> ไปชั้นเดียวกันแล้วลองใหม่
  • functionNotSupported : จริงๆ แล้ว <device(s)> <doesn't/don't> รองรับฟังก์ชันการทำงานนั้น
  • genericDispenseNotSupported : จำเป็นต้องทราบว่าคุณต้องการจ่ายอะไร โปรดลองอีกครั้งด้วยชื่อของของที่จะจ่าย
  • hardError : ขออภัย เกิดข้อผิดพลาดขึ้น เลยควบคุมอุปกรณ์ในบ้านไม่ได้
  • hardError : ขออภัย เกิดข้อผิดพลาดบางอย่างขึ้น เราจึงควบคุมอุปกรณ์ในบ้านของคุณไม่ได้
  • inAutoMode : <device(s)> <is/are> currently set to auto mode. หากต้องการเปลี่ยนอุณหภูมิ คุณจะต้องเปลี่ยน <อุปกรณ์> เป็นโหมดอื่น
  • inAwayMode : <device(s)> <is/are> currently set to away mode. หากต้องการควบคุมตัวควบคุมอุณหภูมิ คุณต้องสลับเป็นโหมด Home ด้วยตนเองโดยใช้แอป Nest ในโทรศัพท์ แท็บเล็ต หรือคอมพิวเตอร์
  • inDryMode : <device(s)> <is/are> currently set to dry mode. หากต้องการเปลี่ยนอุณหภูมิ คุณจะต้องเปลี่ยน <it/them> เป็นโหมดอื่น
  • 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>ไม่ได้อยู่ในโหมดทำความร้อน/ความเย็น
  • inHumidifierMode : ตอนนี้<device(s)> <is/are> ตั้งค่าเป็นโหมดเครื่องทำความชื้น หากต้องการเปลี่ยนอุณหภูมิ คุณต้องเปลี่ยน <อุปกรณ์> เป็นโหมดอื่น
  • inOffMode : ตอนนี้ <device(s)> <is/are> ปิดอยู่ หากต้องการเปลี่ยนอุณหภูมิ คุณจะต้องเปลี่ยน <it/them> เป็นโหมดอื่น
  • 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 : อุณหภูมินั้นอยู่นอกช่วงที่ล็อกไว้ใน <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> set to the maximum speed already.
  • minSettingReached : <device(s)> <is/are> already set to the lowest setting.
  • minSpeedReached : <device(s)> <is/are> set to the minimum speed already.
  • monitoringServiceConnectionLost : <device(s)> <has/have> lost <its/their> connection to the monitoring service.
  • 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)>
  • networkSpeedTestInProgress : เรากําลังทดสอบ <network> <speed/speeds>> อยู่
  • noAvailableApp : ขออภัย ดูเหมือนว่า <app name> จะไม่พร้อมใช้งาน
  • noAvailableChannel : ขออภัย ดูเหมือนว่าช่อง <channel name> ไม่พร้อมให้บริการ
  • noChannelSubscription : ขออภัย ตอนนี้คุณยังไม่ได้ติดตามช่อง <channel name>
  • noTimerExists : ขออภัย ดูเหมือนว่าไม่ได้ตั้งตัวจับเวลาไว้ที่ <device(s)>
  • notSupported : ขออภัย โหมดดังกล่าวไม่พร้อมใช้งานใน <device(s)>
  • obstructionDetected : <device(s)> ตรวจพบสิ่งกีดขวาง
  • ออฟไลน์ , deviceOffline : ขออภัย ดูเหมือนว่า <device(s)> <is/are>n't available right now.
  • onRequiresMode : โปรดระบุโหมดที่ต้องการเปิด
  • passphraseIncorrect : ขออภัย ดูเหมือนว่ารหัส PIN จะไม่ถูกต้อง
  • percentOutOfRange : ขออภัย เราตั้งค่า <device(s)> เป็น <percent> ไม่ได้
  • pinIncorrect : (passphraseIncorrect)
  • rainDetected : ฉันไม่ได้เปิด <device(s)> เพราะตรวจพบฝนตก
  • rangeTooClose : ช่วงนั้นอยู่ใกล้ช่วงทำความร้อน • ทำความเย็นของ <device(s)> มากเกินไป เลือกช่วงของอุณหภูมิที่อยู่ห่างจากช่วงดังกล่าวมากกว่านี้
  • relinkRequired : ขออภัย ดูเหมือนจะเกิดข้อผิดพลาดกับบัญชีของคุณ โปรดใช้แอป Google Home หรือ Assistant เพื่อลิงก์ <device(s)> อีกครั้ง
  • remoteSetDisabled :
    • พารามิเตอร์ที่ไม่บังคับ errorCodeReason
    • currentlyArmed - ขออภัย ตอนนี้การรักษาความปลอดภัยเริ่มทำงานไปแล้ว คุณจึงต้องใช้ <device(s)> หรือแอปเพื่อทําการเปลี่ยนแปลง
    • remoteUnlockNotAllowed - ขออภัย เราปลดล็อก <อุปกรณ์> จากระยะไกลไม่ได้
    • remoteControlOff - การดำเนินการนี้ปิดใช้อยู่ โปรดเปิดใช้รีโมตคอนโทรลใน <device(s)> แล้วลองอีกครั้ง
    • childSafetyModeActive - การดำเนินการดังกล่าวปิดอยู่สำหรับ <device(s)> ขณะที่โหมดความปลอดภัยสำหรับเด็กเปิดอยู่
  • roomsOnDifferentFloors : <device(s)> เข้าถึงห้องเหล่านั้นไม่ได้เนื่องจากอยู่คนละชั้นกัน
  • safetyShutOff : <device(s)> <is/are> in Safety Shut-Off Mode, so <it/they>'ll have to be adjusted by hand.
  • sceneCannotBeApplied : ขออภัย ไม่สามารถติดตั้ง <device(s)> ได้
  • securityRestriction : <device(s)> <has/have> a security restriction.
  • softwareUpdateNotAvailable : ขออภัย ไม่มีอัปเดตซอฟต์แวร์ใน <device(s)>
  • startRequiresTime : หากต้องการดำเนินการดังกล่าว คุณต้องบอกเราว่าต้องการใช้ <device(s)> นานแค่ไหน
  • stillCoolingDown : <device(s)> <is/are> still cooling down.
  • stillWarmingUp : <device(s)> <is/are> still warming up.
  • streamUnavailable : ขออภัย ดูเหมือนว่าตอนนี้จะสตรีมจาก <device(s)> ไม่ได้
  • streamUnplayable : ขออภัย ตอนนี้ยังเปิดสตรีมจาก <device(s)> ไม่ได้
  • tankEmpty : <device(s)> <has/have> <an empty tank/empty tanks>. Please fill <it/them> and try again.
  • targetAlreadyReached : ขออภัย ดูเหมือนว่าจะเป็นอุณหภูมินั้นอยู่แล้ว
  • timerValueOutOfRange : ตั้งค่า<อุปกรณ์>เป็นระยะเวลาดังกล่าวไม่ได้
  • tooManyFailedAttempts : ขออภัย พยายามไม่สำเร็จหลายครั้งเกินไป โปรดไปที่แอปของอุปกรณ์เพื่อดำเนินการต่อให้เสร็จ
  • transientError : ขออภัย เกิดข้อผิดพลาดบางอย่างในการควบคุม <device(s)> โปรดลองอีกครั้ง
  • turnedOff , deviceTurnedOff : <device(s)> <is/are> off right now.
  • unableToLocateDevice : ฉันไม่สามารถค้นหา <device(s)>
  • unknownFoodPreset : <device(s)> ไม่รองรับการตั้งค่าอาหารล่วงหน้านั้น
  • unlockFailure : ปลดล็อก <device(s)> ไม่ได้
  • สถานะหยุดชั่วคราวไม่ได้ : หยุด <device(s)> ชั่วคราวตอนนี้ไม่ได้
  • userCancelled : ok
  • valueOutOfRange : ตั้งค่า <device(s)> เป็นอุณหภูมินั้นไม่ได้

ข้อยกเว้น

คุณควรแสดงข้อยกเว้นเมื่อมีปัญหาหรือการแจ้งเตือนที่เชื่อมโยงกับคําสั่ง คำสั่งอาจสำเร็จหรือไม่สำเร็จ

หากคำสั่งดำเนินการสำเร็จ (status = "SUCCESS") ให้รายงานข้อยกเว้นโดยใช้ลักษณะ 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"
      }
    }]
  }
}

Non-blocking exception (SUCCESS) about another device using 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 : <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 : <device(s)> <is/are> jammed.
  • 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)> ไปห้องนั้นไม่ได้ โปรดย้าย <อุปกรณ์> ไปชั้นเดียวกันแล้วลองใหม่
  • 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 : <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)> <has/have> finished running.
  • 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.