Dokumen ini mencantumkan error dan pengecualian yang didukung secara resmi untuk perangkat smart home. Gunakan kode error dan pengecualian yang diberikan ini dalam respons
maksud, atau dalam notifikasi
jika Anda telah menerapkannya, sehingga Asisten Google akan memberi tahu pengguna akhir tentang masalah
yang terkait dengan perintah atau status perangkat tertentu. Jika respons berisi format yang salah atau errorCode
, Asisten Google akan memberikan pesan error umum kepada pengguna, misalnya, "Maaf, perangkat tidak tersedia saat ini".
Error
Anda harus menampilkan kode error saat masalah menyebabkan permintaan eksekusi atau kueri gagal. Misalnya, jika kunci pintu macet dan tidak dapat dikunci atau dibuka, error tentang status ini harus ditampilkan kepada pengguna.
Kode error dapat dilampirkan di tingkat perangkat atau di tingkat global. Misalnya, jika pengguna memiliki banyak lampu dari satu penyedia dan lampu tersebut dikontrol oleh hub, saat pengguna meminta untuk mematikan semua lampunya, penyedia mungkin menampilkan error tingkat perangkat jika satu lampu offline, atau error tingkat global jika seluruh hub offline dan tidak ada lampu yang dapat dikontrol. Jika semua perangkat offline, tidak ada perbedaan antara penggunaan error tingkat global atau tingkat perangkat.
Rangkuman:
- Error tingkat global: semua perangkat dalam respons memiliki error yang sama
- Error tingkat lokal: respons campuran dengan kasus error dan keberhasilan
Error tingkat global
Cuplikan JSON berikut menunjukkan cara menampilkan error tingkat global dalam respons QUERY atau EXECUTE.
Contoh error tingkat global deviceOffline
karena hub sedang offline:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "errorCode": "deviceOffline", "status" : "ERROR" } }
Contoh error tingkat global inSoftwareUpdate
karena hub sedang
diperbarui:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "errorCode": "inSoftwareUpdate", "status" : "ERROR" } }
Error tingkat perangkat
Respons QUERY
Cuplikan JSON berikut menunjukkan cara menampilkan error tingkat perangkat dalam respons QUERY.
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "devices": { "device-id-1": { "errorCode": "deviceOffline", "status" : "ERROR" }, "device-id-2": { "errorCode": "deviceOffline", "status" : "ERROR" } } } }
Respons EXECUTE
Cuplikan JSON berikut menunjukkan cara menampilkan error tingkat perangkat dalam respons 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 } } ] } }
Notifikasi dengan error
Notifikasi proaktif
Cuplikan JSON berikut menunjukkan cara melaporkan error tingkat perangkat dalam notifikasi proaktif.
{ "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" } } } } } }
Respons lanjutan
Cuplikan JSON berikut menunjukkan cara melaporkan error tingkat perangkat dalam respons lanjutan.
{ "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" } } } } } } }
Daftar kesalahan
Error berikut akan menghasilkan TTS terkait di perangkat.
- aboveMaximumLightEffectsDuration : Durasi tersebut lebih dari durasi maksimum 1 jam. Coba lagi.
- aboveMaximumTimerDuration : Saya hanya dapat menyetel <perangkat> hingga <jangka waktu>
- actionNotAvailable : Maaf, sepertinya saat ini saya tidak bisa melakukan itu.
- actionUnavailableWhileRunning : <device(s)> <is/are> currently running, so I can't make any changes.
- alreadyArmed : <device(s)> <is/are> sudah diaktifkan.
- alreadyAtMax : <device(s)> <is/are> sudah disetel ke suhu maksimum.
- alreadyAtMin : <device(s)> <is/are> sudah disetel ke suhu minimum.
- alreadyClosed : <device(s)> <is/are> already closed.
- alreadyDisarmed : <device(s)> <is/are> already disarmed.
- alreadyDocked : <device(s)> <is/are> sudah terhubung.
- alreadyInState : <device(s)> <is/are> already in that state.
- alreadyLocked : <device(s)> <is/are> sudah terkunci.
- alreadyOff : <device(s)> <is/are> already off.
- alreadyOn : <device(s)> <is/are> sudah aktif.
- alreadyOpen : <device(s)> <is/are> sudah terbuka.
- alreadyPaused : <device(s)> <is/are> already paused.
- alreadyStarted : <device(s)> <is/are> sudah dimulai.
- alreadyStopped : <device(s)> <is/are> already stopped.
- alreadyUnlocked : <device(s)> <is/are> sudah dibuka kuncinya.
- ambiguousZoneName : Maaf, <device(s)> tidak dapat mengidentifikasi zona yang Anda maksud. Pastikan zona Anda memiliki nama yang unik, lalu coba lagi.
- amountAboveLimit : Jumlahnya melebihi yang dapat didukung oleh <device(s)>.
- appLaunchFailed : Maaf, gagal meluncurkan <nama aplikasi> di <perangkat>.
- armFailure : <device(s)> tidak dapat diaktifkan.
- armLevelNeeded : Saya tidak yakin mau menyetel <device(s)> ke level mana. Coba ucapkan "Setel <perangkat> ke <keamanan rendah>" atau "Setel <perangkat> ke <keamanan tinggi>"
- authFailure : Sepertinya saya tidak dapat menjangkau <device(s)>. Coba periksa aplikasi untuk memastikan <device/devices> <is/are> sudah disiapkan sepenuhnya.
- bagFull : <device(s)> <has/have> <a full bag/full bags>. Please empty <it/them> and try again.
- belowMinimumLightEffectsDuration : Itu kurang dari durasi minimum 5 menit. Coba lagi.
- belowMinimumTimerDuration : Saya tidak dapat menyetel <device(s)> untuk waktu yang sesingkat itu. Coba lagi.
- binFull : <device(s)> <has/have> <a full bin/full bins>.
- cancelArmingRestricted : Maaf, saya tidak dapat membatalkan pengaktifan <device(s)>.
- cancelTooLate : Maaf, sudah terlambat untuk membatalkan. Sebagai gantinya, gunakan <device(s)> atau aplikasi.
- channelSwitchFailed : Maaf, gagal beralih ke channel <channel name>. Harap coba lagi nanti.
- chargerIssue : Maaf, sepertinya <device(s)> <has/have> <a charger issue/charger issues>.
- commandInsertFailed : Tidak dapat memproses perintah untuk <device(s)>.
- deadBattery : <device(s)> <has/have> <a dead battery/dead batteries>.
- degreesOutOfRange : Derajat yang diminta berada di luar rentang untuk <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 : Maaf, sepertinya <device(s)> sedang melakukan sesuatu saat ini.
- deviceCharging : Maaf, sepertinya <device(s)> tidak bisa melakukan itu karena (ha_shared.ItsTheyre size=$item.devices.total_device_count) mengisi daya.
- deviceClogged : Maaf, sepertinya <device(s)> tersumbat.
- deviceCurrentlyDispensing : <device(s)> sedang mengeluarkan sesuatu saat ini.
- deviceDoorOpen : Pintu terbuka di <device(s)>. Tutup pintu dan coba lagi.
- deviceHandleClosed : Pegangan ditutup di <device(s)>. Buka pegangan dan coba lagi.
- deviceJammingDetected : <device(s)> <is/are> jammed.
- deviceLidOpen : Penutup <device(s)> terbuka. Tutup penutupnya, lalu coba lagi.
- deviceNeedsRepair : <device(s)> <need(s)> to be repaired. Hubungi dealer reparasi lokal Anda.
- deviceNotDocked : Maaf, sepertinya <device(s)> <isn't/aren't> dipasang ke dok. Pasangkan <it/them> ke dok, lalu coba lagi.
- deviceNotFound : <device(s)> <is/are>n't tersedia. Sebaiknya coba siapkan <it/them> lagi.
- deviceNotMounted : Maaf, sepertinya <device(s)> tidak dapat melakukan tindakan tersebut karena <it/they> <is/are>n't dipasang.
- deviceNotReady : <device(s)> <is/are>n't ready.
- deviceStuck : <device(s)> <is/are> macet dan memerlukan bantuan Anda.
- deviceTampered : <device(s)> <has/have> been tampered with.
- deviceThermalShutdown : Maaf, sepertinya <device(s)> mati karena suhu ekstrem.
- directResponseOnlyUnreachable : <device(s)> <doesn't/don't> support remote control.
- disarmFailure : <device(s)> tidak dapat dinonaktifkan.
- discreteOnlyOpenClose : Maaf, <device(s)> hanya dapat dibuka atau ditutup sepenuhnya.
- dispenseAmountAboveLimit : <device(s)> tidak dapat mengeluarkan dalam jumlah sebanyak itu.
- dispenseAmountBelowLimit : <device(s)> tidak dapat mengeluarkan dalam jumlah sesedikit itu.
- dispenseAmountRemainingExceeded : <device(s)> tidak memiliki <item yang dikeluarkan> yang cukup untuk melakukannya.
- dispenseFractionalAmountNotSupported : <device(s)> tidak dapat mengeluarkan <dispense item> dalam jumlah pecahan.
- dispenseFractionalUnitNotSupported : <device(s)> tidak mendukung pecahan satuan tersebut untuk <dispense item>.
- dispenseUnitNotSupported : <device(s)> tidak mendukung unit tersebut untuk <item yang dikeluarkan>.
- doorClosedTooLong : Pintu di <device(s)> sudah lama tidak dibuka. Silakan buka pintunya, pastikan ada sesuatu di dalamnya, lalu coba lagi.
- emergencyHeatOn : <device(s)> <is/are> dalam Mode Hangat Darurat, jadi <it/they> harus disesuaikan secara manual.
- faultyBattery : <device(s)> <has/have> <a faulty battery/faulty batteries>.
- floorUnreachable : <device(s)> tidak dapat menjangkau ruangan tersebut. Pindahkan <it/them> ke lantai yang benar, lalu coba lagi.
- functionNotSupported : Sebenarnya, <device(s)> <tidak/tidak> mendukung fungsi tersebut.
- genericDispenseNotSupported : Saya perlu tahu apa yang ingin Anda keluarkan. Coba lagi dengan nama item.
- hardError : Maaf, terjadi error dan saya tidak bisa mengontrol perangkat smart home Anda.
- hardError : Maaf, terjadi error dan saya tidak bisa mengontrol perangkat smart home Anda.
- inAutoMode : <device(s)> <is/are> saat ini disetel ke mode otomatis. Untuk mengubah suhu, Anda harus mengganti <it/them> ke mode lain.
- inAwayMode : <device(s)> <is/are> currently set to away mode. Untuk mengontrol termostat, Anda perlu mengalihkannya ke mode di rumah secara manual menggunakan aplikasi Nest di ponsel, tablet, atau komputer.
- inDryMode : <device(s)> <is/are> currently set to dry mode. Untuk mengubah suhu, Anda harus mengganti <it/them> ke mode lain.
- inEcoMode : <device(s)> <is/are> currently set to eco mode. Untuk mengubah suhu, Anda harus mengganti <it/them> ke mode lain.
- inFanOnlyMode : <device(s)> <is/are> currently set to fan-only mode. Untuk mengubah suhu, Anda harus mengganti <it/them> ke mode lain.
- inHeatOrCool : <device(s)> <is/are>n't in heat/cool mode.
- inHumidifierMode : <device(s)> <is/are> saat ini disetel ke mode pelembap udara. Untuk mengubah suhu, Anda harus mengganti <it/them> ke mode lain.
- 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. Untuk mengubah suhu, Anda harus mengganti <it/them> ke mode lain.
- inSleepMode : <device(s)> <is/are> dalam mode tidur. Coba lagi nanti.
- inSoftwareUpdate : <device(s)> <is/are> currently in a software update.
- lockFailure : <device(s)> tidak dapat dikunci.
- lockedState : <device(s)> <is/are> saat ini terkunci.
- lockedToRange : Suhu tersebut berada di luar rentang yang dikunci di <device(s)>.
- lowBattery : <device(s)> <has/have> low battery.
- maxSettingReached : <device(s)> <is/are> sudah disetel ke setelan tertinggi.
- maxSpeedReached : <device(s)> <is/are> sudah disetel ke kecepatan maksimum.
- minSettingReached : <device(s)> <is/are> sudah disetel ke setelan terendah.
- minSpeedReached : <device(s)> <is/are> already set to the minimum speed.
- monitoringServiceConnectionLost : <device(s)> <has/have> lost <its/their> connection to the monitoring service.
- needsAttachment : Maaf, sepertinya <device(s)> <is/are> tidak memiliki perlengkapan yang diperlukan. Silakan ganti lalu coba lagi.
- needsBin : Maaf, sepertinya <device(s)> <is/are> tidak memiliki wadah. Silakan ganti lalu coba lagi.
- needsPads : <device(s)> <need(s)> bantalan baru.
- needsSoftwareUpdate : <device(s)> <need(s)> update software.
- needsWater : <device(s)> <need(s)> air.
- networkProfileNotRecognized : Maaf, saya tidak mengenali "<network profile>" di <device(s)>.
- networkSpeedTestInProgress : Saya sudah menguji <speed/speeds> <network>.
- noAvailableApp : Maaf, sepertinya <nama aplikasi> tidak tersedia.
- noAvailableChannel : Maaf, sepertinya channel <channel name> tidak tersedia.
- noChannelSubscription : Maaf, saat ini Anda belum berlangganan ke channel <channel name>.
- noTimerExists : Maaf, sepertinya tidak ada timer yang disetel di <device(s)>.
- notSupported : Maaf, mode tersebut tidak tersedia untuk <device(s)>.
- obstructionDetected : <device(s)> mendeteksi penghalang.
- offline , deviceOffline : Maaf, sepertinya <device(s)> <is/are>n't tersedia saat ini.
- onRequiresMode : Tentukan mode yang ingin Anda aktifkan.
- passphraseIncorrect : Maaf, sepertinya PIN yang dimasukkan salah.
- percentOutOfRange : Maaf, saya tidak dapat menyetel <device(s)> ke <percent>.
- pinIncorrect : (passphraseIncorrect)
- rainDetected : Saya tidak membuka <perangkat> karena terdeteksi hujan.
- rangeTooClose : Rentang suhu Hangat-Sejuk untuk <device(s)> terlalu dekat. Pilih suhu yang rentangnya lebih jauh.
- relinkRequired : Maaf, sepertinya ada masalah dengan akun Anda. Gunakan Aplikasi Google Home atau Asisten untuk menautkan kembali <device(s)>.
-
remoteSetDisabled
:
- Parameter opsional
errorCodeReason
currentlyArmed
- Maaf, karena keamanan sudah diaktifkan, Anda harus menggunakan <device(s)> atau aplikasi untuk melakukan perubahan apa pun.remoteUnlockNotAllowed
- Maaf, saya tidak dapat membuka kunci <perangkat> dari jarak jauh.remoteControlOff
- Tindakan tersebut saat ini dinonaktifkan. Aktifkan remote control di <device(s)> lalu coba lagi.childSafetyModeActive
- Tindakan itu dinonaktifkan untuk <device(s)> saat mode keselamatan anak sedang aktif.
- Parameter opsional
- roomsOnDifferentFloors : <device(s)> tidak dapat menjangkau ruangan tersebut karena berada di lantai yang berbeda.
- safetyShutOff : <device(s)> <is/are> dalam Mode Mati Aman, jadi <perangkat tersebut/perangkat-perangkat tersebut> harus disesuaikan secara manual.
- sceneCannotBeApplied : Maaf, <device(s)> tidak dapat diterapkan.
- securityRestriction : <device(s)> <has/have> a security restriction.
- softwareUpdateNotAvailable : Maaf, tidak ada update software yang tersedia di <device(s)>.
- startRequiresTime : Untuk melakukannya, Anda perlu memberi tahu saya berapa lama Anda ingin menjalankan <device(s)>.
- stillCoolingDown : <device(s)> <is/are> masih mendingin.
- stillWarmingUp : <device(s)> <is/are> masih dalam proses pemanasan.
- streamUnavailable : Maaf, sepertinya streaming dari <device(s)> tidak tersedia saat ini.
- streamUnplayable : Maaf, saya tidak bisa memutar streaming dari <device(s)> saat ini.
- tankEmpty : <device(s)> <has/have> <an empty tank/empty tanks>. Please fill <it/them> and try again.
- targetAlreadyReached : Maaf, sepertinya suhu yang diminta sama dengan suhu saat ini.
- timerValueOutOfRange : <device(s)> tidak dapat disetel untuk durasi waktu tersebut.
- tooManyFailedAttempts : Maaf, terlalu banyak upaya yang gagal. Harap buka aplikasi perangkat Anda untuk menyelesaikan tindakan tersebut.
- transientError : Maaf, terjadi error saat mengontrol <device(s)>. Coba lagi.
- turnedOff , deviceTurnedOff : <device(s)> <is/are> off right now.
- unableToLocateDevice : Saya tidak dapat menemukan lokasi <device(s)>.
- unknownFoodPreset : <device(s)> tidak mendukung preset makanan tersebut.
- unlockFailure : <device(s)> tidak dapat dibuka kuncinya.
- unpausableState : <device(s)> tidak dapat dijeda saat ini.
- userCancelled : ok
- valueOutOfRange : <device(s)> tidak dapat disetel ke suhu tersebut.
Pelaporan status online dan offline
Saat perangkat offline, Anda harus melaporkan <code{"online": code="" dir="ltr" false}<="" translate="no"> ke Report State dalam waktu lima menit setelah perilaku perangkat. Sebaliknya, saat perangkat kembali ke status online, Anda harus melaporkan <code{"online": code="" dir="ltr" translate="no" true}<=""> ke Report State dalam waktu lima menit setelah perilaku perangkat. Setiap kali perangkat kembali online, partner harus melaporkan semua status perangkat saat ini menggunakanreportStateAndNotification
API.
Contoh ini menunjukkan bahwa jenis perangkat light
sedang online, dan melaporkan
semua status perangkat saat ini.
"requestId": "test-request-id",
"agentUserId": "agent-user-1",
"payload":{
"devices": {
"states": {
"device-id-1": {
"brightness": 65,
"on": true,
"online": true
}
"notifications": {},
}
}
}
Pengecualian
Anda harus menampilkan pengecualian jika ada masalah atau pemberitahuan yang terkait dengan perintah. Perintah dapat berhasil atau gagal.
Jika perintah berhasil (status = "SUCCESS"), laporkan pengecualian menggunakan trait StatusReport
(untuk perangkat selain target), atau dengan menampilkan exceptionCode
yang sesuai (untuk perangkat target).
Misalnya, jika layar serat pengering penuh, pengguna masih dapat memulai pengering, tetapi Anda mungkin ingin memperingatkan mereka tentang kondisi ini. Demikian pula, saat baterai perangkat hampir habis tetapi tidak kosong, Anda masih dapat menjalankan perintah, tetapi harus memberi tahu pengguna bahwa baterai perangkat hampir habis.
Jika perintah gagal karena pengecualian, statusnya harus "EXCEPTIONS", dan pengecualian harus dilaporkan menggunakan trait StatusReport
.
Pengecualian tidak memblokir (BERHASIL) tentang perangkat target
Contoh ini adalah untuk mengunci pintu:
Daya baterai smart lock pintu depan lemah. Mengunci pintu depan.
{ "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" } }] } }
Pengecualian non-pemblokiran (BERHASIL) tentang perangkat lain yang menggunakan StatusReport
Contoh ini adalah untuk mengaktifkan sistem keamanan: Oke, mengaktifkan sistem keamanan. Jendela depan terbuka.
{ "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" }] } }] } }
Pengecualian pemblokiran tentang perangkat lain yang menggunakan 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" } ] } } } }
Daftar pengecualian
Pengecualian berikut akan menghasilkan TTS terkait di perangkat.
- 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 : Karbon monoksida telah terdeteksi di <nama rumah>.
- deviceAtExtremeTemperature : <device(s)> <is/are> at <an extreme temperature/extreme temperatures>.
- deviceJammingDetected : <device(s)> <is/are> jammed.
- deviceMoved : <device(s)> <was/were> dipindahkan.
- deviceOpen : <device(s)> <is/are> open.
- deviceTampered : <device(s)> <has/have> been tampered with.
- deviceUnplugged : <device(s)> <is/are> unplugged.
- floorUnreachable : <device(s)> tidak dapat menjangkau ruangan tersebut. Pindahkan <it/them> ke lantai yang benar, lalu coba lagi.
- hardwareFailure : <device(s)> <has/have> masalah hardware.
- 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)> gerakan.
- needsPads : <device(s)> <need(s)> bantalan baru.
- needsSoftwareUpdate : <device(s)> <need(s)> update software.
- needsWater : <device(s)> <need(s)> air.
- networkJammingDetected : koneksi jaringan rumah ke <device(s)> tidak berfungsi dengan benar.
- noIssuesReported : <device(s)> tidak melaporkan masalah.
- roomsOnDifferentFloors : <device(s)> tidak dapat menjangkau ruangan tersebut karena berada di lantai yang berbeda.
- runCycleFinished : <device(s)> <has/have> finished running.
- securityRestriction : <device(s)> <has/have> a security restriction.
- smokeDetected : Asap telah terdeteksi di <house name>.
- tankEmpty : <device(s)> <has/have> <an empty tank/empty tanks>. Please fill <it/them> and try again.
- usingCellularBackup : <device(s)> <is/are> menggunakan pencadangan seluler.
- waterLeakDetected : <device(s)> <detect(s)> kebocoran air.