Questo documento elenca gli errori e le eccezioni ufficialmente supportati per i
dispositivi per la casa. Utilizza questi codici di errore ed eccezioni forniti nell'intento
risposta o nelle notifiche
se è stato implementato, per consentire all'Assistente Google di avvisare gli utenti finali di problemi relativi a
dato lo stato del comando o del dispositivo. Se la risposta contiene una formattazione errata o
errorCode
, l'Assistente Google invia agli utenti un messaggio di errore generico, ad esempio:
"Spiacenti, device non è al momento disponibile."
Errori
Dovresti restituire un codice di errore quando un problema causa un'esecuzione o la richiesta di query non abbia esito positivo. Ad esempio, se una serratura è inceppata e non può essere bloccato o sbloccato, all'utente deve essere restituito un errore relativo a questo stato.
I codici di errore possono essere allegati a livello di dispositivo o a livello globale. Ad esempio:
se un utente ha molte luci di un solo fornitore ed è controllato da un hub, quando
l'utente chiede di spegnere tutte le luci, il fornitore potrebbe restituire un
errore a livello di dispositivo se una singola spia è offline o errore a livello globale se
l'intero hub è offline e non è possibile controllare le luci. Se tutte le
i dispositivi sono offline, non c'è alcuna differenza tra l'utilizzo a livello globale o a livello di dispositivo
errori. Quando un dispositivo è offline, devi segnalare lo stato {"online": false}
in
reportState anche se restituisci
Codice di errore deviceOffline
.
In sintesi:
- Errore a livello globale: tutti i dispositivi nella risposta hanno lo stesso errore
- Errore a livello locale: risposta mista con errori e casi di successo
Errori a livello globale
Il seguente snippet JSON mostra come restituire errori a livello globale in Risposta QUERY o EXECUTE.
Un esempio di errore a livello globale deviceOffline
dovuto all'hub è:
offline:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "errorCode": "deviceOffline", "status" : "ERROR" } }
Un esempio di errore a livello globale inSoftwareUpdate
dovuto all'hub è:
in aggiornamento:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "errorCode": "inSoftwareUpdate", "status" : "ERROR" } }
Errori a livello di dispositivo
Risposta di QUERY
Il seguente snippet JSON mostra come restituisci errori a livello di dispositivo nel Risposta di QUERY.
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "devices": { "device-id-1": { "errorCode": "deviceOffline", "status" : "ERROR" }, "device-id-2": { "errorCode": "deviceOffline", "status" : "ERROR" } } } }
ESEGUI risposta
Il seguente snippet JSON mostra come restituisci errori a livello di dispositivo nel ESEGUI la risposta.
{ "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 } } ] } }
Notifiche con errori
Notifica proattiva
Il seguente snippet JSON mostra come segnalare errori a livello di dispositivo in un una notifica proattiva.
{ "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" } } } } } }
Risposta di follow-up
Il seguente snippet JSON mostra come segnalare errori a livello di dispositivo in un risposta aggiuntiva.
{ "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" } } } } } } }
Elenco di errori
I seguenti errori produrranno la sintesi vocale associata sul dispositivo.
- aboveMaximumLightEffectsDuration : Superiore alla durata massima di 1 ora. Riprova.
- aboveMaximumTimerDuration : Posso impostare solo <device(s)> per un massimo di <periodo di tempo>
- actionNotAvailable : Mi dispiace, sembra che io non possa farlo al momento.
- actionUnavailableWhileRunning : <device(s)> <is/are> attualmente in esecuzione, quindi non posso apportare modifiche.
- alreadyArmed : <device(s)> <is/are> è già abilitato.
- alreadyAtMax : <device(s)> <is/are> è già impostato sulla temperatura massima.
- alreadyAtMin : <device(s)> <is/are> è già impostato sulla temperatura minima.
- alreadyClosed : <device(s)> <is/are> è già chiuso.
- alreadyDisarmed : <device(s)> <is/are> è già disabilitato.
- alreadyDocked : <device(s)> <is/are> è già agganciato alla base.
- alreadyInState : <device(s)> <is/are> sono già in quello stato.
- alreadyLocked : <device(s)> <is/are> è già bloccato.
- alreadyOff : <device(s)> <is/are> sono già disattivati.
- alreadyOn : <device(s)> <is/are> è già attiva.
- alreadyOpen : <device(s)> <is/are> è già aperta.
- alreadyPaused : <device(s)> <is/are> è già in pausa.
- alreadyStarted : <device(s)> <is/are> è già iniziata.
- alreadyStopped : <device(s)> <is/are> è già stata interrotta.
- alreadyUnlocked : <device(s)> <is/are> è già sbloccato.
- ambiguousZoneName : Spiacenti, <device(s)> non riesce a identificare la zona che ti interessa. Assicurati che le zone abbiano nomi univoci e riprova.
- amountAboveLimit : Più di <device(s)> supportati.
- appLaunchFailed : Spiacenti, impossibile avviare <nome app> su <device(s)>.
- armFailure : <device(s)> impossibile abilitare.
- armLevelNeeded : Non so quale livello impostare <device(s)> a. Prova a dire "Imposta <dispositivi> a <basso livello di sicurezza>" o "Imposta <dispositivi> a <alta sicurezza>"
- authFailure : Non riesco a raggiungere <device(s)>. Prova a controllare l'app per verificare che il tuo <device/devices> <is/are> completamente configurato.
- bagFull : <device(s)> <has/have> <un sacchetto pieno/borse piene>. Svuota <it/them> e riprova.
- belowMinimumLightEffectsDuration : È inferiore alla durata minima di 5 minuti. Riprova.
- belowMinimumTimerDuration : Non riesco a impostare <device(s)> per un periodo così breve. Riprova.
- binFull : <device(s)> <has/have> <a scomparto pieno/contenitori pieni>.
- cancelArmingRestricted : Mi dispiace, non è stato possibile annullare l'abilitazione di <device(s)>.
- cancelTooLate : Spiacenti, è troppo tardi per annullare. Usa <device(s)> o all'app.
- channelSwitchFailed : Spiacenti, non è stato possibile passare al canale <nome canale>. Riprova più tardi.
- chargerIssue : Mi dispiace, sembra <device(s)> <has/have> <un problema con il caricabatterie/problemi relativi al caricabatterie>.
- commandInsertFailed : Impossibile elaborare i comandi per <device(s)>.
- deadBattery : <dispositivi> <has/have> <a batteria scarica/batterie scariche>.
- degreesOutOfRange : I gradi richiesti non rientrano nell'intervallo per <device(s)>.
- deviceAlertNeedsAssistance : <device(s)> <has/have> un avviso attivo e <need(s)> assistenza.
- deviceAtExtremeTemperature : <dispositivi> <is/are> a <temperature estrema/temperature estreme>.
- deviceBusy : Mi dispiace, sembra <device(s)> sta già facendo qualcosa.
- deviceCharging : Mi dispiace, sembra <device(s)> non può farlo perché è in carica (ha_shared.ItsItre size=$item.devices.total_device_count).
- deviceClogged : Mi dispiace, sembra <device(s)> è intasato.
- deviceCurrentlyDispensing : <device(s)> sta già erogando qualcosa.
- deviceDoorOpen : La porta è aperta su <device(s)>. Chiudila e riprova.
- deviceHandleClosed : L'handle è chiuso su <device(s)>. Aprila e riprova.
- deviceJammingDetected : <device(s)> <is/are> inceppata.
- deviceLidOpen : Il coperchio è aperto su <device(s)>. Chiudila e riprova.
- deviceNeedsRepair : <device(s)> <need(s)> da riparare. Contatta il tuo rivenditore di assistenza locale.
- deviceNotDocked : Mi dispiace, sembra <device(s)> <non è/non è> agganciato alla base. Aggancia <it/them> e riprova.
- deviceNotFound : <device(s)> <is/are>non sono disponibili. Potresti provare a impostare <it/them> di nuovo.
- deviceNotMounted : Mi dispiace, sembra <device(s)> non possono farlo perché <it/they> <is/are>non sono montati.
- deviceNotReady : <device(s)> <is/are>non sono pronti.
- deviceStuck : <device(s)> <is/are> si è bloccato e ha bisogno del tuo aiuto.
- deviceTampered : <dispositivi> <has/have> sia stato manomesso.
- deviceThermalShutdown : Mi dispiace, sembra <device(s)> arrestarsi a causa delle temperature estreme.
- directResponseOnlyUnreachable : <device(s)> <non/non> che supportano il controllo remoto.
- disarmFailure : <device(s)> non può essere disabilitato.
- discreteOnlyOpenClose : Spiacenti, <device(s)> può essere solo aperto o chiuso completamente.
- dispenseAmountAboveLimit : <device(s)> non possiamo erogare una quantità così elevata.
- dispenseAmountBelowLimit : <device(s)> non possiamo erogare una quantità così ridotta.
- dispenseAmountRemainingExceeded : <device(s)> non ha abbastanza <dispense item> per farlo.
- dispenseFractionalAmountNotSupported : <device(s)> non può erogare frazioni di <dispense item>.
- dispenseFractionalUnitNotSupported : <device(s)> non supporta frazioni di quell'unità per <dispense item>.
- dispenseUnitNotSupported : <device(s)> non supporta quell'unità per <dispense item>.
- doorClosedTooLong : È passato un po' di tempo dall'ultima volta che la porta <device(s)> è stata aperta. Apri la porta, assicurati che ci sia qualcosa all'interno e riprova.
- emergencyHeatOn : <device(s)> <is/are> in modalità Riscaldamento di emergenza, quindi <it/want> dovranno essere regolati manualmente.
- faultyBattery : <dispositivi> <has/have> <batteria difettosa/batterie difettose>.
- floorUnreachable : <device(s)> non possiamo raggiungere la stanza. Sposta <it/them> al piano giusto e riprova.
- functionNotSupported : In realtà, <device(s)> <non/non> supportano questa funzionalità.
- genericDispenseNotSupported : Ho bisogno di sapere cosa vuoi erogare. Riprova indicando il nome dell'elemento.
- hardError : Mi dispiace, si è verificato un problema e non riesco a controllare il tuo dispositivo per la casa.
- hardError : Mi dispiace, si è verificato un problema e non riesco a controllare il tuo dispositivo per la casa.
- inAutoMode : <device(s)> <is/are> attualmente impostata sulla modalità automatica. Per cambiare la temperatura, devi cambiare <it/them> a un'altra modalità.
- inAwayMode : <device(s)> <is/are> è attualmente impostata sulla modalità Assenza. Per controllare il termostato, devi passare manualmente alla modalità A casa utilizzando l'app Nest su smartphone, tablet o computer.
- inDryMode : <device(s)> <is/are> attualmente impostata sulla modalità deumidificatore. Per cambiare la temperatura, devi cambiare <it/them> a un'altra modalità.
- inEcoMode : <device(s)> <is/are> è attualmente impostata sulla modalità Eco. Per cambiare la temperatura, devi cambiare <it/them> a un'altra modalità.
- inFanOnlyMode : <device(s)> <is/are> attualmente impostata sulla modalità di sola ventola. Per cambiare la temperatura, devi cambiare <it/them> a un'altra modalità.
- inHeatOrCool : <device(s)> <is/are>non sono in modalità Caldo • Freddo.
- inHumidifierMode : <device(s)> <is/are> attualmente impostato sulla modalità umidificatore. Per cambiare la temperatura, devi cambiare <it/them> a un'altra modalità.
- inOffMode : <device(s)> <is/are> attualmente disattivati. Per cambiare la temperatura, devi cambiare <it/them> a un'altra modalità.
- inPurifierMode : <device(s)> <is/are> attualmente impostata sulla modalità di purificazione. Per cambiare la temperatura, devi cambiare <it/them> a un'altra modalità.
- inSleepMode : <device(s)> <is/are> in modalità sonno. Riprova più tardi.
- inSoftwareUpdate : <dispositivi> <is/are> attualmente in fase di aggiornamento software.
- lockFailure : <device(s)> impossibile bloccare.
- lockedState : <device(s)> <is/are> attualmente bloccato.
- lockedToRange : La temperatura non rientra nell'intervallo bloccato su <device(s)>.
- lowBattery : <dispositivi> <has/have> batteria in esaurimento.
- maxSettingReached : <device(s)> <is/are> è già impostata l'impostazione più alta.
- maxSpeedReached : <device(s)> <is/are> è già impostato sulla velocità massima.
- minSettingReached : <device(s)> <is/are> è già impostata l'impostazione più bassa.
- minSpeedReached : <device(s)> <is/are> è già impostato sulla velocità minima.
- monitoringServiceConnectionLost : <device(s)> <has/have> hanno perso <its/their> connessione al servizio di monitoraggio.
- needsAttachment : Mi dispiace, sembra <device(s)> <is/are> manca un allegato obbligatorio. Sostituiscila e riprova.
- needsBin : Mi dispiace, sembra <device(s)> <is/are> in cui manca un contenitore. Sostituiscila e riprova.
- needsPads : <device(s)> <need(s)> nuovi pad.
- needsSoftwareUpdate : <dispositivi> <need(s)> un aggiornamento software.
- needsWater : <device(s)> <need(s)> acqua.
- networkProfileNotRecognized : Spiacenti, non riconosco "<profilo di rete>" su <device(s)>.
- networkSpeedTestInProgress : Sto già testando <network> <velocità/velocità>>.
- noAvailableApp : Mi dispiace, sembra <nome app> non è disponibile.
- noAvailableChannel : Mi dispiace, sembra canale <nome canale> non è disponibile.
- noChannelSubscription : Spiacenti, non hai effettuato l'iscrizione al canale <nome canale> in questo momento.
- noTimerExists : Mi dispiace, non ci sono timer impostati su <device(s)>.
- notSupported : Mi dispiace, questa modalità non è disponibile per <device(s)>.
- obstructionDetected : <device(s)> ha rilevato un'ostruzione.
- offline , dispositivoOffline : Mi dispiace, sembra <device(s)> <is/are>non sono disponibili al momento.
- onRequiresMode : Specifica quale modalità vuoi attivare.
- passphraseIncorrect : Mi dispiace, sembra che quel PIN non sia corretto.
- percentOutOfRange : Mi dispiace, non posso impostare <device(s)> fino a <percent>.
- pinIncorrect : (passphraseIncorrect)
- rainDetected : Non ho aperto <device(s)> perché è stata rilevata pioggia.
- rangeTooClose : Questi dispositivi sono troppo vicini per un intervallo Caldo-Freddo per <device(s)>. Scegli temperature più distanziate.
- relinkRequired : Sembra che si sia verificato un problema con il tuo account. Usa l'app Google Home o dell'assistente per ricollegare <device(s)>.
-
remoteSetDisabled
:
- .
- Parametro facoltativo
errorCodeReason
currentlyArmed
- Spiacenti, la sicurezza è già abilitata, devi utilizzare <device(s)> o l'app per apportare modifiche.remoteUnlockNotAllowed
- Mi dispiace, non riesco a sbloccare <device(s)> da remoto.remoteControlOff
- Questa azione è attualmente disattivata. Attiva il controllo remoto su <device(s)> e riprova.childSafetyModeActive
- Questa azione è disattivata per <device(s)> mentre è attiva la modalità di protezione dei minori.
- Parametro facoltativo
- roomsOnDifferentFloors : <device(s)> non possono raggiungere quelle stanze perché si trovano su piani diversi.
- safetyShutOff : <device(s)> <is/are> in modalità di spegnimento di sicurezza, quindi <it/want> dovrà essere regolata a mano.
- sceneCannotBeApplied : Spiacenti, <device(s)> e non possono essere applicate.
- securityRestriction : <device(s)> <has/have> una limitazione di sicurezza.
- softwareUpdateNotAvailable : Spiacenti, non ci sono aggiornamenti software disponibili su <device(s)>.
- startRequiresTime : Per farlo devi dirmi per quanto tempo vuoi eseguire <device(s)>.
- stillCoolingDown : <device(s)> <is/are> è ancora in fase di raffreddamento.
- stillWarmingUp : <device(s)> <is/are> è ancora in fase di riscaldamento.
- streamUnavailable : Spiacenti, sembra che lo stream non sia al momento disponibile da <device(s)>.
- streamUnplayable : Mi dispiace, non posso riprodurre lo stream da <device(s)> in questo momento.
- tankEmpty : <device(s)> <has/have> <un serbatoio vuoto/serbatoi vuoti>. Inserisci <it/them> e riprova.
- targetAlreadyReached : Mi dispiace, sembra che questa sia già la temperatura attuale.
- timerValueOutOfRange : <device(s)> non possono essere impostate per questo periodo di tempo.
- tooManyFailedAttempts : Spiacenti, sono stati effettuati troppi tentativi non riusciti. Vai all'app del dispositivo per completare l'azione.
- transientError : Spiacenti, si è verificato un problema durante il controllo di <device(s)>. Riprova.
- turnedOff , dispositivoDisattivato : <device(s)> <is/are> ora disattivati.
- unableToLocateDevice : Non ho potuto individuare <device(s)>.
- unknownFoodPreset : <device(s)> non supporta quel programma predefinito per alimenti.
- unlockFailure : <device(s)> impossibile sbloccare.
- unpausableState : <device(s)> al momento non può essere messo in pausa.
- userCancelled : Ok
- valueOutOfRange : <device(s)> e non può essere impostato su quella temperatura.
Eccezioni
Dovresti restituire un'eccezione quando esiste un problema o un avviso associato a un . Il comando potrebbe avere esito positivo o negativo.
Se il comando ha avuto esito positivo (stato = "SUCCESS"), segnala eccezioni
usando la trait StatusReport
(per dispositivi diversi dal target)
oppure restituendo un exceptionCode
appropriato (per il dispositivo di destinazione).
Ad esempio, se lo schermo della lanugine dell'asciugatrice è al completo, l'utente può comunque avviare un'asciugatrice, ma potresti voler avvisarli di questo stato. Analogamente, quando dispositivo ha la batteria scarica che non è vuota, puoi comunque eseguire un comando ma dovresti avvisarli che la batteria del dispositivo è in esaurimento.
Se il comando non riesce a causa di eccezioni, lo stato dovrebbe essere "EXCEPTIONS",
e le eccezioni devono essere segnalate utilizzando il tratto StatusReport
.
Eccezione non bloccante (SUCCESS) per il dispositivo di destinazione
Questo esempio riguarda la chiusura della porta:
La batteria della serratura della porta principale è in esaurimento. Chiudo a chiave la porta d'ingresso.
{ "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" } }] } }
Eccezione non blocco (SUCCESS) relativa a un altro dispositivo che utilizza StatusReport
Questo esempio si riferisce all'abilitazione di un sistema di sicurezza: Ok, abilita il sistema di sicurezza. La finestra anteriore è aperta.
{ "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" }] } }] } }
Blocco dell'eccezione per un altro dispositivo che utilizza 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" } ] } } } }
Elenco delle eccezioni
Le seguenti eccezioni produrranno la sintesi vocale associata sul dispositivo.
- bagFull : <device(s)> <has/have> <un sacchetto pieno/borse piene>. Svuota <it/them> e riprova.
- binFull : <device(s)> <has/have> <a scomparto pieno/contenitori pieni>.
- carbonMonoxideDetected : È stato rilevato monossido di carbonio in <nome casa>.
- deviceAtExtremeTemperature : <dispositivi> <is/are> a <temperature estrema/temperature estreme>.
- deviceJammingDetected : <device(s)> <is/are> inceppata.
- deviceMoved : <device(s)> <was/were> trasloco.
- deviceOpen : <dispositivi> <is/are> aperta.
- deviceTampered : <dispositivi> <has/have> sia stato manomesso.
- deviceUnplugged : <dispositivi> <is/are> non è collegato alla corrente.
- floorUnreachable : <device(s)> non possiamo raggiungere la stanza. Sposta <it/them> al piano giusto e riprova.
- hardwareFailure : <dispositivi> <has/have> un problema hardware.
- inSoftwareUpdate : <dispositivi> <is/are> attualmente in fase di aggiornamento software.
- isBypassed : <device(s)> <is/are> attualmente ignorato.
- lowBattery : <dispositivi> <has/have> batteria in esaurimento.
- motionDetected : <dispositivi> <detect(s)> movimento.
- needsPads : <device(s)> <need(s)> nuovi pad.
- needsSoftwareUpdate : <dispositivi> <need(s)> un aggiornamento software.
- needsWater : <device(s)> <need(s)> acqua.
- networkJammingDetected : la connessione della rete di casa a <device(s)> non funziona correttamente.
- noIssuesReported : <device(s)> non ha segnalato alcun problema.
- roomsOnDifferentFloors : <device(s)> non possono raggiungere quelle stanze perché si trovano su piani diversi.
- runCycleFinished : <device(s)> <has/have> ha terminato l'esecuzione.
- securityRestriction : <device(s)> <has/have> una limitazione di sicurezza.
- smokeDetected : È stato rilevato fumo in <nome casa>.
- tankEmpty : <device(s)> <has/have> <un serbatoio vuoto/serbatoi vuoti>. Inserisci <it/them> e riprova.
- usingCellularBackup : <dispositivi> <is/are> usando il servizio di backup da rete mobile.
- waterLeakDetected : <dispositivi> <detect(s)> una perdita d'acqua.