Dokumen ini berisi daftar error dan pengecualian yang didukung secara resmi untuk perangkat
smart home. Gunakan kode error dan pengecualian yang diberikan ini dalam respons
intent, atau dalam notifikasi
jika Anda telah menerapkannya, sehingga Asisten Google akan memberi tahu pengguna akhir tentang masalah terkait
perintah atau status perangkat tertentu. Jika respons berisi format yang salah atau
errorCode
, Asisten Google akan memberi pengguna pesan error umum, misalnya,
"Maaf, perangkat tidak tersedia saat ini".
Error
Anda harus menampilkan kode error saat terjadi 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 mematikan semua lampunya, 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 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 berhasil
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
Respons 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" } } } }
EKSEKUSI respons
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 ini 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 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 pada perangkat.
- aboveMaksimalkanLightEffectsDuration : Itu lebih dari durasi maksimum 1 jam. Harap coba lagi.
- aboveMaksimalkanTimerDuration : Saya hanya dapat menetapkan <device(s)> hingga <time period>
- actionNotAvailable : Maaf, sepertinya saat ini saya tidak bisa melakukan hal itu.
- actionAvailableWhileRunning : <device(s)> <is/are> sedang berjalan, sehingga saya tidak dapat melakukan perubahan apa pun.
- alreadyArmed : <device(s)> <is/are> sudah dipersenjatai.
- 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> sudah ditutup.
- sudahDinonaktifkan : <device(s)> <is/are> sudah dinonaktifkan.
- alreadyDocked : <device(s)> <is/are> sudah dikaitkan.
- alreadyInState : <device(s)> <is/are> sudah dalam status tersebut.
- sudah Terkunci : <device(s)> <is/are> sudah dikunci.
- alreadyOff : <device(s)> <is/are> nonaktif.
- sudahAktif : <device(s)> <is/are> sudah aktif.
- sudahBuka : <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 dibuka kuncinya.
- ambiguZoneName : 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 level mana yang harus disetel <device(s)>. Coba ucapkan "Tetapkan <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 perangkat <is/are> sudah siap sepenuhnya.
- tasFull : <device(s)> <has/have> <a full bag/full bagasi>. Kosongkan <it/have>, 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 bisa membatalkan pengaktifan <device(s)>.
- cancelTooLate : Maaf, sudah terlambat untuk membatalkannya. Gunakan <device(s)> atau aplikasi.
- channelSwitchFailed : Maaf, gagal beralih ke saluran <channel name>. 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 mati baterai/baterai mati>.
- derajatOutOfRange : Derajat yang diminta di luar kisaran untuk <device(s)>.
- deviceAlertRequireAssistance : <device(s)> <has/have> peringatan 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.ItsThatre size=$item.devices.total_device_count).
- deviceCblocked : Maaf, sepertinya <device(s)> tersumbat.
- deviceCurrentDispens : <device(s)> sudah mengeluarkan sesuatu saat ini.
- deviceDoorOpen : pintu terbuka di <device(s)>. Tutup dan coba lagi.
- deviceHandleClosed : Nama sebutan channel ditutup di <device(s)>. Buka saja dan coba lagi.
- deviceJammingDetect : <device(s)> <is/are> macet.
- deviceLidOpen : Penutup terbuka di <device(s)>. Silakan tutup dan coba lagi.
- deviceNeedsRepair : <device(s)> <need(s)> yang perlu diperbaiki. Hubungi dealer reparasi lokal Anda.
- deviceNotDocked : Maaf, sepertinya <device(s)> <isn't/aren't> docked. Silakan pasang <it/them> ke dok, lalu coba lagi.
- deviceNotFound : <device(s)> <is/are>tidak tersedia. Sebaiknya coba siapkan <it/they> lagi.
- deviceNotMounted : Maaf, sepertinya <device(s)> tidak dapat melakukannya karena <it/they> <is/are>tidak terpasang.
- deviceNotReady : <device(s)> <is/are>belum siap.
- deviceStuck : <device(s)> <is/are> macet dan perlu bantuan Anda.
- deviceTampered : <device(s)> <has/have> telah dirusak.
- deviceThermalShutdown : Maaf, sepertinya <device(s)> mati karena suhu ekstrem.
- directResponseOnlyUnreachable : <device(s)> <tidak't/tidak> mendukung 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.
- dispenseAmountUnderLimit : <device(s)> tidak dapat mengeluarkan sesedikit itu.
- dispenseAmountRemainingexceeded : <device(s)> tidak memiliki cukup <dispense item> untuk melakukannya.
- dispenseFracrationAmountNotSupported : <device(s)> tidak dapat mengeluarkan pecahan <item disp>.
- dispenseFracrationUnitNotSupported : <device(s)> tidak mendukung pecahan dari unit tersebut untuk <dispense item>.
- dispenseUnitNotSupported : <device(s)> tidak mendukung unit tersebut untuk <dispense item>.
- lockClosedTooLong : 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/people> harus disesuaikan secara manual.
- faultyBattery : <device(s)> <has/have> <a rusak baterai/baterai rusak>.
- floorUnreachable : <device(s)> tidak dapat menjangkau ruangan tersebut. Harap pindahkan <it/mereka> ke lantai yang benar dan coba lagi.
- functionNotSupported : Sebenarnya, <device(s)> <does't/don't> mendukung fungsi tersebut.
- generikDispenseNotSupported : Saya perlu tahu apa yang ingin Anda berikan. Coba lagi dengan nama item.
- hardError : Maaf, terjadi error dan saya tidak dapat mengontrol perangkat rumah Anda.
- hardError : Maaf, terjadi error 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/them> 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/them> ke mode lain.
- inEcoMode : <device(s)> <is/are> saat ini disetel ke mode hemat energi. Untuk mengubah suhu, Anda harus mengalihkan <it/them> ke mode lain.
- inFanOnlyMode : <device(s)> <is/are> saat ini ditetapkan ke mode khusus kipas. Untuk mengubah suhu, Anda harus mengalihkan <it/them> 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/them> ke mode lain.
- inOffMode : <device(s)> <is/are> saat ini nonaktif. Untuk mengubah suhu, Anda harus mengalihkan <it/mereka> ke mode lain.
- inPurifierMode : <device(s)> <is/are> saat ini disetel ke mode penyaring. Untuk mengubah suhu, Anda harus mengalihkan <it/them> ke mode lain.
- inSleepMode : <device(s)> <is/are> dalam mode tidur. Coba lagi nanti.
- inSoftwareUpdate : <device(s)> <is/are> saat ini sedang diupdate 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.
- pemantauanServiceConnectionLost : <device(s)> <has/have> kehilangan <its/this> koneksi ke layanan pemantauan.
- needLampiran : Maaf, sepertinya <device(s)> <is/are> tidak memiliki lampiran yang diperlukan. Silakan ganti lalu coba lagi.
- requirementsBin : Maaf, sepertinya <device(s)> <is/are> tidak memiliki tempat sampah. Silakan ganti lalu coba lagi.
- needPads : <device(s)> <need(s)> new pad.
- PerluSoftwareUpdate : <device(s)> <need(s)> update software.
- needWater : <device(s)> <need(s)> air.
- networkProfileNotRecognized : Maaf, saya tidak mengenali "<network profile>" di <device(s)>.
- networkSpeedTestInProgress : Saya sudah menguji <network> <speed/speeds>>.
- noAvailableApp : Maaf, sepertinya <nama aplikasi> tidak tersedia.
- noAvailableChannel : Maaf, sepertinya channel <channel name> tidak tersedia.
- noChannelSubscription : Maaf, saat ini Anda belum subscribe ke channel <channel name>.
- noTimerExists : Maaf, sepertinya tidak ada timer yang disetel di <device(s)>.
- notSupported : Maaf, mode tersebut tidak tersedia untuk <device(s)>.
- obstruktif : <device(s)> mendeteksi gangguan.
- offline , deviceOffline : Maaf, sepertinya <device(s)> <is/are>tidak tersedia saat ini.
- onRequiresMode : Tentukan mode mana yang ingin Anda aktifkan.
- frasa sandi Salah : Maaf, sepertinya PIN yang dimasukkan salah.
- percentOutOfRange : Maaf, saya tidak dapat menetapkan <device(s)> ke <percent>.
- pinSalah : (passfrasaFalse)
- hujanterdeteksi : Saya tidak membuka <perangkat(>) karena hujan terdeteksi.
- rangeTooClose : Ini terlalu dekat untuk rentang Heat-Cool untuk <device(s)>. Pilih suhu yang rentangnya lebih jauh.
- relinkWajib : Maaf, sepertinya ada masalah dengan akun Anda. Silakan gunakan Aplikasi Google Home atau Asisten untuk menautkan ulang <perangkat>.
-
remoteSetDisabled
:
- Parameter opsional
errorCodeReason
currentlyArmed
- Maaf, karena keamanan sudah diaktifkan, Anda harus menggunakan <device(s)> atau aplikasi untuk melakukan perubahan.remoteUnlockNotAllowed
- Maaf, saya tidak bisa membuka kunci <device(s)> dari jarak jauh.remoteControlOff
- Tindakan tersebut saat ini dinonaktifkan. Aktifkan remote control di <device> lalu coba lagi.childSafetyModeActive
- Tindakan tersebut dinonaktifkan untuk <device> saat mode keselamatan anak aktif.
- Parameter opsional
- RoomsOnDifferenceFloors : <device(s)> tidak dapat menjangkau ruangan tersebut karena berada di lantai yang berbeda.
- safetyShutOff : <device(s)> <is/are> dalam Mode Mati Aman, jadi <it/they> harus disesuaikan secara manual.
- sceneCannotBeApplied : Maaf, <device(s)> tidak dapat diterapkan.
- securityRestriction : <device(s)> <has/have> pembatasan keamanan.
- 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 melakukan pemanasan.
- streamAvailable : Maaf, sepertinya streaming saat ini tidak tersedia dari <device(s)>.
- streamUnplayable : Maaf, saya tidak dapat memutar streaming dari <device(s)> saat ini.
- tankEmpty : <device(s)> <has/have> <tan tangki kosong/tangki kosong>. Isi <it/have>, lalu coba lagi.
- targetAlreadyReached : Maaf, sepertinya itu sudah suhu saat ini.
- timerValueOutOfRange : <device(s)> tidak dapat disetel selama jangka waktu tersebut.
- terlaluManyFailed : Maaf, terlalu banyak upaya yang gagal. Buka aplikasi perangkat untuk menyelesaikan tindakan tersebut.
- transientError : Maaf, terjadi masalah saat mengontrol <device>. Coba lagi.
- turnOff , deviceTurnedOff : <device(s)> <is/are> nonaktif sekarang.
- UnableToLocationsDevice : 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 saat ini.
- userCancelled : oke
- valueOutOfRange : <device(s)> tidak dapat ditetapkan ke suhu tersebut.
Pengecualian
Anda harus menampilkan pengecualian saat ada masalah atau pemberitahuan yang terkait dengan perintah. Perintah dapat berhasil atau gagal.
Jika perintah berhasil (status = "SUCCESS"), laporkan pengecualian
menggunakan fitur 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, tetapi Anda mungkin ingin memperingatkan mereka tentang status ini. Demikian pula, saat perangkat memiliki baterai lemah yang tidak kosong, Anda masih dapat menjalankan 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 hampir habis. 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.
- tasFull : <device(s)> <has/have> <a full bag/full bagasi>. Kosongkan <it/have>, 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>.
- deviceJammingDetect : <device(s)> <is/are> macet.
- deviceMoved : <device(s)> <was/were> dipindahkan.
- deviceOpen : <device(s)> <is/are> terbuka.
- deviceTampered : <device(s)> <has/have> telah dirusak.
- deviceUnplugged : <device(s)> <is/are> dicabut.
- floorUnreachable : <device(s)> tidak dapat menjangkau ruangan tersebut. Harap pindahkan <it/mereka> ke lantai yang benar dan coba lagi.
- hardwareFailure : <device(s)> <has/have> masalah hardware.
- inSoftwareUpdate : <device(s)> <is/are> saat ini sedang diupdate dalam update software.
- isSkip : <device(s)> <is/are> saat ini diabaikan.
- lowBattery : <device(s)> <has/have> baterai lemah.
- motionDeteksi : gerakan <device(s)> <detect(s)>.
- needPads : <device(s)> <need(s)> new pad.
- PerluSoftwareUpdate : <device(s)> <need(s)> update software.
- needWater : <device(s)> <need(s)> air.
- networkJammingDetect : koneksi jaringan rumah ke <device(s)> tidak berfungsi dengan benar.
- noIssuesReport : <device(s)> melaporkan tidak ada masalah.
- RoomsOnDifferenceFloors : <device(s)> tidak dapat menjangkau ruangan tersebut karena berada di lantai yang berbeda.
- runCycleFinished : <device(s)> <has/have> selesai berjalan.
- securityRestriction : <device(s)> <has/have> pembatasan keamanan.
- smoke detected : Asap telah terdeteksi di <house name>.
- tankEmpty : <device(s)> <has/have> <tan tangki kosong/tangki kosong>. Isi <it/have>, lalu coba lagi.
- menggunakanMobileBackup : <device(s)> <is/are> menggunakan pencadangan seluler.
- waterLeakTerdeteksi : <device(s)> <detect(s)> kebocoran air.