Dokumen ini mencantumkan error dan pengecualian yang didukung secara resmi untuk perangkat smart home. Harap gunakan error dan kode pengecualian yang diberikan ini dalam respons
intent, 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 untuk saat ini".
Error
Anda harus menampilkan kode error saat ada masalah yang menyebabkan eksekusi atau permintaan kueri gagal. Misalnya, jika kunci pintu macet dan tidak dapat dikunci atau dibuka kuncinya, 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 dikontrol oleh hub, saat
pengguna meminta untuk menonaktifkan semua lampu mereka, penyedia dapat menampilkan
error tingkat perangkat jika satu lampu offline, atau error tingkat global jika
seluruh hub mereka offline dan tidak ada lampu yang dapat dikontrol. Jika semua perangkat sedang offline, tidak ada perbedaan antara penggunaan error tingkat global atau tingkat perangkat. Saat perangkat sedang offline, Anda harus melaporkan status {"online": false}
di
reportState meskipun Anda menampilkan
kode error deviceOffline
.
Ringkasan:
- Error tingkat global: semua perangkat dalam respons memiliki error yang sama
- Error tingkat lokal: respons campuran dengan error dan kasus sukses
Error tingkat global
Cuplikan JSON berikut menunjukkan cara Anda menampilkan error tingkat global dalam respons QUERY atau EXECUTE.
Contoh error tingkat global deviceOffline
karena hub bersifat offline:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "errorCode": "deviceOffline", "status" : "ERROR" } }
Contoh error tingkat global inSoftwareUpdate
karena hub
diperbarui:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "errorCode": "inSoftwareUpdate", "status" : "ERROR" } }
Error tingkat perangkat
QUERY
Cuplikan JSON berikut menunjukkan cara Anda 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 EKSEKUT
Cuplikan JSON berikut menunjukkan cara Anda menampilkan error tingkat perangkat dalam respons EKSEKUT.
{ "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 Anda 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 tindak lanjut
Cuplikan JSON berikut menunjukkan cara Anda melaporkan error tingkat perangkat dalam respons tindak lanjut.
{ "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 pada perangkat.
- above maximumLightEffectsDuration : Ini lebih dari durasi maksimum 1 jam. Harap coba lagi.
- aboveMaksimalkanTimerDuration : Saya hanya dapat menyetel <device(s)> hingga <time period>
- actionNotAvailable : Maaf, sepertinya saat ini saya tidak bisa melakukannya.
- actionAvailableWhileRunning : <device(s)> <is/are> sedang berjalan, sehingga saya tidak dapat membuat perubahan apa pun.
- sudahArAr : <device(s)> <is/are> sudah diaktifkan.
- AtAtMax : <device(s)> <is/are> sudah disetel ke suhu maksimum.
- AtAtMin : <device(s)> <is/are> sudah disetel ke suhu minimum.
- alreadyClosed : <device(s)> <is/are> sudah ditutup.
- SudahDinonaktifkan : <device(s)> <is/are> sudah dinonaktifkan.
- sudah Dok : <device(s)> <is/are> sudah dipasang ke dok.
- sudah InState : <device(s)> <is/are> sudah dalam status tersebut.
- sudah Terkunci : <device(s)> <is/are> sudah terkunci.
- OffOff : <device(s)> <is/are> sudah nonaktif.
- sudah aktif : <device(s)> <is/are> sudah aktif.
- sudah terbuka : <device(s)> <is/are> sudah terbuka.
- sudah Dijeda : <device(s)> <is/are> sudah dijeda.
- sudah dimulai : <device(s)> <is/are> sudah dimulai.
- sudah dihentikan : <device(s)> <is/are> sudah dihentikan.
- sudah tidak terkunci : <device(s)> <is/are> sudah tidak terkunci.
- ZoneZoneName : Maaf, <device(s)> tidak dapat mengidentifikasi zona yang Anda maksud. Pastikan zona Anda memiliki nama unik, lalu coba lagi.
- amountAboveLimit : Itu lebih dari yang dapat didukung oleh <device(s)>.
- appLaunchFailed : Maaf, gagal meluncurkan <app name> di <device(s)>.
- armFailure : <device(s)> tidak dapat diaktifkan.
- armLevelNeeded : Saya tidak yakin harus menyetel <device(s)> ke level mana. Coba ucapkan "Setel <perangkat(s)> ke <keamanan rendah>" atau "Tetapkan <perangkat(s)> ke <keamanan tinggi>"
- authFailure : Sepertinya saya tidak bisa menjangkau <device(s)>. Coba cek aplikasinya untuk memastikan <device/devices> Anda <is/are> sudah siap sepenuhnya.
- bagFull : <device(s)> <has/have> <a full bag/fullbag>. Silakan kosongkan <it/the> lalu coba lagi.
- di bawahMinimumLightEffectsDuration : Kurang dari durasi minimum 5 menit. Harap coba lagi.
- di bawahMinimumTimerDuration : Saya tidak dapat menyetel <device(s)> untuk waktu yang sesingkat itu. Harap coba lagi.
- binFull : <device(s)> <has/have> <a full bin/full bins>.
- pembatalanArmingRestricted : Maaf, saya tidak dapat membatalkan pengaktifan <device(s)>.
- pembatalan TooLate : Maaf, sudah terlambat untuk membatalkannya. Gunakan <device(s)> atau aplikasi sebagai gantinya.
- channelSwitchFailed : Maaf, gagal beralih ke saluran <channel name>. Coba lagi nanti.
- chargerIssue : Maaf, sepertinya <device(s)> <has/have> <a pengisi issue/charger issues>.
- commandInsertFailed : Tidak dapat memproses perintah untuk <device(s)>.
- deadBattery : <device(s)> <has/have> <a dead battery/dead battery>.
- derajatOutOfRange : Derajat yang diminta di luar kisaran untuk <device(s)>.
- deviceAlertNeedsAssistance : <device(s)> <has/have> sebuah pemberitahuan aktif dan <need(s)> bantuan Anda.
- deviceAtExtremeTemperature : <device(s)> <is/are> pada <suhu ekstrem/suhu ekstrem>.
- deviceBusy : Maaf, sepertinya <device(s)> sudah melakukan sesuatu saat ini.
- deviceCharging : Maaf, sepertinya <device(s)> tidak dapat melakukannya karena pengisian daya (ha_shared.ItsMerekare size=$item.devices.total_device_count).
- deviceClogging : Maaf, sepertinya <device(s)> tersumbat.
- deviceSaat ini Mengeluarkan : <device(s)> sudah mengeluarkan sesuatu saat ini.
- deviceDoorOpen : Pintu terbuka di <device(s)>. Tutup dan coba lagi.
- deviceHandleClosed : Pegangan ditutup pada <device(s)>. Buka dan coba lagi.
- deviceJammingDetected : <device(s)> <is/are> macet.
- deviceLidOpen : Penutupnya terbuka di <device(s)>. Tutup dan coba lagi.
- deviceNeedsRepair : <device(s)> <need(s)> untuk diperbaiki. Hubungi dealer reparasi lokal Anda.
- deviceNotDocked : Maaf, sepertinya perangkat <device(s)> <isn't/aren't> terpasang. Silakan pasang <it/mereka> dan pasang lagi, lalu coba lagi.
- deviceNotFound : <device(s)> <is/are>tidak tersedia. Sebaiknya coba siapkan <it/mereka> lagi.
- deviceNotMounted : Maaf, sepertinya <device(s)> tidak dapat melakukannya karena <it/they> <is/are>tidak dipasang.
- deviceNotReady : <device(s)> <is/are>belum siap.
- deviceStuck : <device(s)> <is/are> macet dan perlu bantuan Anda.
- deviceTampered : <device(s)> <telah/dirusak.
- deviceThermalShutdown : Maaf, sepertinya <device(s)> mati karena suhu ekstrem.
- directResponseOnlyUnreachable : <device(s)> <tidak/tidak> mendukung remote control.
- disarmFailure : <device(s)> tidak dapat dinonaktifkan.
- disceteOnlyOpenClose : Maaf, <device(s)> hanya bisa dibuka atau ditutup total.
- dispenseAmountAboveLimit : <device(s)> tidak dapat mengeluarkan dalam jumlah sebanyak itu.
- dispenseAmountUnderLimit : <device(s)> tidak dapat mengeluarkan dalam jumlah sesedikit itu.
- dispenseAmountRemainingexceeded : <device(s)> tidak memiliki cukup <dispense item> untuk melakukannya.
- dispenseFracrationAmountNotSupported : <device(s)> tidak dapat mengeluarkan sebagian <dispense item>.
- dispenseFracrationUnitNotSupported : <device(s)> tidak mendukung pecahan dari unit tersebut untuk <dispense item>.
- dispenseUnitNotSupported : <device(s)> tidak mendukung unit tersebut untuk <dispense item>.
- doClosedClosedLong : Sudah lama sejak pintu di <device(s)> dibuka. Silakan buka pintunya, pastikan ada sesuatu di dalamnya, lalu coba lagi.
- daruratHeatOn : <device(s)> <is/are> dalam Mode Sistem Pemanas Darurat, jadi <it/mereka> harus disesuaikan secara manual.
- faultyBattery : <device(s)> <has/have> <a rusak baterai/baterai rusak>.
- floorUnreachable : <device(s)> tidak dapat menjangkau ruangan tersebut. Silakan pindahkan <it/the> ke lantai yang benar lalu coba lagi.
- functionNotSupported : Sebenarnya, <device(s)> <tidak/tidak> mendukung fungsi tersebut.
- generikDispenseNotSupported : Saya perlu tahu apa yang ingin Anda keluarkan. Coba lagi dengan nama item.
- hardError : Maaf, terjadi masalah dan saya tidak dapat mengontrol perangkat rumah Anda.
- hardError : Maaf, terjadi masalah dan saya tidak dapat mengontrol perangkat rumah Anda.
- inAutoMode : <device(s)> <is/are> saat ini disetel ke mode otomatis. Untuk mengubah suhu, Anda harus mengalihkan <it/the> ke mode lain.
- inAwayMode : <device(s)> <is/are> saat ini disetel ke mode pergi. Untuk mengontrol termostat, Anda harus mengalihkannya ke mode di rumah secara manual menggunakan aplikasi Nest di ponsel, tablet, atau komputer.
- inDryMode : <device(s)> <is/are> saat ini disetel ke mode kering. Untuk mengubah suhu, Anda harus mengalihkan <it/the> ke mode lain.
- inEcoMode : <device(s)> <is/are> saat ini disetel ke mode hemat energi. Untuk mengubah suhu, Anda harus mengalihkan <it/the> ke mode lain.
- inFanOnlyMode : <device(s)> <is/are> saat ini disetel ke mode hanya kipas. Untuk mengubah suhu, Anda harus mengalihkan <it/the> ke mode lain.
- inHeatOrCool : <device(s)> <is/are>tidak dalam mode hangat/sejuk.
- inHumidifierMode : <device(s)> <is/are> saat ini disetel ke mode pelembab udara. Untuk mengubah suhu, Anda harus mengalihkan <it/the> ke mode lain.
- inOffMode : <device(s)> <is/are> saat ini nonaktif. Untuk mengubah suhu, Anda perlu mengalihkan <it/the> ke mode lain.
- inPurifierMode : <device(s)> <is/are> saat ini disetel ke mode purifier. Untuk mengubah suhu, Anda harus mengalihkan <it/the> ke mode lain.
- inSleepMode : <device(s)> <is/are> dalam mode tidur. Coba lagi nanti.
- inSoftwareUpdate : <device(s)> <is/are> saat ini sedang dalam update software.
- LockFailure : <device(s)> tidak dapat dikunci.
- lockState : <device(s)> <is/are> saat ini terkunci.
- lockToRange : Suhu tersebut berada di luar rentang yang dikunci di <device(s)>.
- lowBattery : <device(s)> <has/have> baterai lemah.
- 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> sudah disetel ke kecepatan minimum.
- monitoringServiceConnectionLost : <device(s)> <has/have> kehilangan <its/mereka> koneksi ke layanan pemantauan.
- attachments : Maaf, sepertinya <device(s)> <is/are> tidak memiliki lampiran yang diperlukan. Silakan ganti lalu coba lagi.
- needBin : Maaf, sepertinya <device(s)> <is/are> tidak memiliki tempat sampah. Silakan ganti lalu coba lagi.
- needPads : <device(s)> <need(s)> new pad.
- needSoftwareUpdate : <device(s)> <need(s)> update software.
- needWater : <device(s)> <need(s)> water.
- networkProfileNotRecognized : Maaf, saya tidak mengenali "<network profile>" di <device(s)>.
- networkSpeedTestInProgress : Saya sudah menguji <network> <speed/speeds>>.
- noAvailableApp : Maaf, sepertinya <app name> tidak tersedia.
- noAvailableChannel : Maaf, sepertinya channel <channel name> tidak tersedia.
- noChannelSubscription : Maaf, Anda tidak subscribe ke channel <channel name> saat ini.
- noTimerExists : Maaf, sepertinya tidak ada timer yang disetel di <device(s)>.
- not Didukung : Maaf, mode tersebut tidak tersedia untuk <device(s)>.
- penghalang terdeteksi : <perangkat(>)> mendeteksi gangguan.
- offline , deviceOffline : Maaf, sepertinya <device(s)> <is/are>tidak tersedia saat ini.
- onRequiresMode : Tentukan mode yang ingin Anda aktifkan.
- frasa sandi yang salah : Maaf, sepertinya PIN-nya salah.
- percentOutOfRange : Maaf, saya tidak bisa setel <device(s)> ke <percent>.
- pinFalse : (passfrasaFalse)
- hujanterdeteksi : Saya tidak membuka <perangkat> karena hujan terdeteksi.
- rangeTooClose : Batas itu terlalu dekat untuk rentang Hangat-Sejuk untuk <perangkat(s)>. Pilih suhu yang lebih jauh.
- relinkWajib : Maaf, sepertinya ada masalah dengan akun Anda. Silakan gunakan Aplikasi Google Home atau Asisten untuk menautkan kembali <perangkat>.
-
remoteSetDisabled
:
- Parameter opsional
errorCodeReason
currentlyArmed
- Maaf, karena sistem keamanan sudah diaktifkan, Anda harus menggunakan <device(s)> atau aplikasi untuk melakukan perubahan apa pun.remoteUnlockNotAllowed
- Maaf, saya tidak bisa membuka kunci <perangkat(>)> dari jarak jauh.remoteControlOff
- Tindakan tersebut saat ini dinonaktifkan. Aktifkan remote control di <device(s)> dan coba lagi.childSafetyModeActive
- Tindakan tersebut dinonaktifkan untuk <device(s)> saat mode keselamatan anak sedang aktif.
- Parameter opsional
- roomOnDifferenceFloors : <device(s)> tidak dapat menjangkau ruang tersebut karena lantainya berbeda.
- safetyShutOff : <device(s)> <is/are> dalam Mode Mati Aman, jadi <it/mereka> harus disesuaikan secara manual.
- SceneSceneBeBeApplied : Maaf, <device(s)> tidak dapat diterapkan.
- securityRestriction : <device(s)> <has/have> pembatasan keamanan.
- softwareUpdateNotAvailable : Maaf, tidak ada pembaruan perangkat lunak 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.
- streamAvailable : Maaf, sepertinya streaming dari <device(s)> belum tersedia.
- streamUnplayable : Maaf, saya tidak dapat memutar streaming dari <device(s)> saat ini.
- tankEmpty : <device(s)> <has/have> <tanga kosong/tangki kosong>. Isi <it/mereka> dan coba lagi.
- targetExistingReached : Maaf, sepertinya suhu sudah sama dengan suhu saat ini.
- timerValueOutOfRange : <device(s)> tidak dapat disetel untuk durasi itu.
- ManyManyFailedattempts : Maaf, terlalu banyak upaya yang gagal. Buka aplikasi perangkat untuk menyelesaikan tindakan tersebut.
- transientError : Maaf, terjadi masalah saat mengontrol <device(s)>. Coba lagi.
- turnOff , deviceTurnedOff : <device(s)> <is/are> nonaktif sekarang.
- UnableToFindDevice : Saya tidak dapat menemukan <device(s)>.
- UnknownFoodPreset : <device(s)> tidak mendukung preset makanan tersebut.
- unlockFailure : <device(s)> tidak dapat dibuka kuncinya.
- unpausableState : <device(s)> tidak dapat dijeda untuk saat ini.
- userCancelled : oke
- valueOutOfRange : <device(s)> tidak dapat disetel ke suhu tersebut.
Pengecualian
Anda harus menampilkan pengecualian saat ada masalah atau pemberitahuan yang terkait dengan perintah. Perintah berhasil atau gagal.
Jika perintah berhasil (status = "SUCCESS"), laporkan pengecualian menggunakan karakteristik StatusReport
(untuk perangkat selain target), atau dengan menampilkan exceptionCode
yang sesuai (untuk perangkat target).
Misalnya, jika layar lint pengering penuh, pengguna masih dapat memulai pengering mereka, tetapi Anda mungkin ingin memperingatkan mereka tentang status ini. Demikian pula, saat perangkat memiliki baterai lemah yang tidak kosong, Anda masih dapat mengeksekusi perintah tetapi harus memberi tahu bahwa baterai perangkat lemah.
Jika perintah gagal karena pengecualian, statusnya harus "EXCEPTIONS",
dan pengecualian harus dilaporkan menggunakan fitur StatusReport
.
Pengecualian non-pemblokiran (SUCCESS) tentang perangkat target
Contoh ini untuk mengunci pintu:
Baterai 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 (SUCCESS) tentang perangkat lain menggunakan StatusReport
Contoh ini 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" }] } }] } }
Memblokir pengecualian tentang perangkat lain 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 pada perangkat.
- bagFull : <device(s)> <has/have> <a full bag/fullbag>. Silakan kosongkan <it/the> lalu coba lagi.
- binFull : <device(s)> <has/have> <a full bin/full bins>.
- karbonMonoxideTerdeteksi : karbon monoksida terdeteksi di <nama rumah>.
- deviceAtExtremeTemperature : <device(s)> <is/are> pada <suhu ekstrem/suhu ekstrem>.
- deviceJammingDetected : <device(s)> <is/are> macet.
- deviceMoved : <device(s)> <was/were> dipindahkan.
- deviceOpen : <device(s)> <is/are> terbuka.
- deviceTampered : <device(s)> <telah/dirusak.
- deviceUnplugged : <device(s)> <is/are> dicabut.
- floorUnreachable : <device(s)> tidak dapat menjangkau ruangan tersebut. Silakan pindahkan <it/the> ke lantai yang benar lalu coba lagi.
- hardwareFailure : <device(s)> <has/have> masalah hardware.
- inSoftwareUpdate : <device(s)> <is/are> saat ini sedang dalam update software.
- diabaikan : <device(s)> <is/are> saat ini diabaikan.
- lowBattery : <device(s)> <has/have> baterai lemah.
- Motiondetect : <device(s)> <detect(s)> motion.
- needPads : <device(s)> <need(s)> new pad.
- needSoftwareUpdate : <device(s)> <need(s)> update software.
- needWater : <device(s)> <need(s)> water.
- networkJammingDetected : koneksi jaringan rumah ke <device(s)> tidak berfungsi dengan benar.
- noIssuesReports : <device(s)> tidak melaporkan masalah.
- roomOnDifferenceFloors : <device(s)> tidak dapat menjangkau ruang tersebut karena lantainya berbeda.
- runCycleFinished : <device(s)> <has/have> selesai berjalan.
- securityRestriction : <device(s)> <has/have> pembatasan keamanan.
- smokeDetected : Asap telah terdeteksi di <house name>.
- tankEmpty : <device(s)> <has/have> <tanga kosong/tangki kosong>. Isi <it/mereka> dan coba lagi.
- menggunakanCellularCadangkan : <device(s)> <is/are> menggunakan pencadangan seluler.
- waterLeakDetected : <device(s)> <detect(s)> kebocoran air.