Questo documento elenca gli errori e le eccezioni ufficialmente supportati per i dispositivi di domotica. Utilizza questi codici di errori ed eccezioni nella risposta all'intent o nelle notifiche se li hai implementati, in modo che l'Assistente Google avvisi gli utenti finali dei problemi relativi a un determinato comando o stato del dispositivo. Se la risposta contiene formattazione o errorCode
non corretta, l'Assistente Google mostra agli utenti un messaggio di errore generico, ad esempio "Spiacenti, dispositivo non è al momento disponibile".
Errori
Devi restituire un codice di errore quando un problema causa il fallimento di una richiesta di esecuzione o query. Ad esempio, se la serratura di una porta è bloccata e non può essere chiusa o aperta, 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 lampadine di un fornitore e queste sono controllate da un hub, quando l'utente chiede di spegnere tutte le lampadine, il fornitore potrebbe restituire un errore a livello di dispositivo se una singola lampadina è offline o un errore a livello globale se l'intero hub è offline e non è possibile controllare nessuna lampadina. Se tutti i dispositivi sono offline, non c'è differenza tra l'utilizzo di errori a livello globale o a livello di dispositivo.
Quando un dispositivo è offline, devi segnalare {"online": false}
a
Report State entro 5 minuti dal
comportamento del dispositivo.
In sintesi:
- Errore a livello globale: tutti i dispositivi nella risposta presentano lo stesso errore
- Errore a livello locale: risposta mista con casi di errore e di successo
Errori a livello globale
Il seguente snippet JSON mostra come restituire errori a livello globale nella risposta QUERY o EXECUTE.
Un esempio di errore a livello globale deviceOffline
dovuto al fatto che l'hub è offline:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "errorCode": "deviceOffline", "status" : "ERROR" } }
Un esempio di errore a livello globale inSoftwareUpdate
dovuto all'aggiornamento dell'hub:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "errorCode": "inSoftwareUpdate", "status" : "ERROR" } }
Errori a livello di dispositivo
Risposta QUERY
Il seguente snippet JSON mostra come restituire gli errori a livello di dispositivo nella risposta QUERY.
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "devices": { "device-id-1": { "errorCode": "deviceOffline", "status" : "ERROR" }, "device-id-2": { "errorCode": "deviceOffline", "status" : "ERROR" } } } }
Risposta EXECUTE
Lo snippet JSON seguente mostra come restituire gli errori a livello di dispositivo nella risposta 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 } } ] } }
Notifiche con errori
Notifica proattiva
Il seguente snippet JSON mostra come segnalare gli errori a livello di dispositivo in 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 una risposta di follow-up.
{ "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 errori
I seguenti errori produrranno il TTS associato sul dispositivo.
- aboveMaximumLightEffectsDuration : È superiore alla durata massima di un'ora. Riprova.
- aboveMaxTimerDuration : Posso impostare <device(s)> solo per un massimo di <time period>
- actionNotAvailable : Mi dispiace, non posso farlo adesso.
- actionUnavailableWhileRunning : <device(s)> <is/are> currently running, so I can't make any changes.
- già abilitato : <device(s)> <is/are> è già abilitato.
- giàAtMax : <device(s)> <is/are> è già impostato sulla temperatura massima.
- alreadyAtMin : <device(s)> <is/are> already set to the minimum temperature.
- alreadyClosed : <device(s)> <is/are> already closed.
- 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> already locked.
- alreadyOff : <device(s)> <is/are> already off.
- alreadyOn : <device(s)> <is/are> already on.
- già aperti : <device(s)> <è/sono> già aperti.
- già in pausa : <device(s)> <is/are> è già in pausa.
- alreadyStarted : <device(s)> <is/are> already started.
- alreadyStopped : <device(s)> <is/are> already stopped.
- alreadyUnlocked : <device(s)> <is/are> already unlocked.
- ambiguousZoneName : Spiacenti, <device(s)> non riesce a identificare la zona interessata. Assicurati che le zone abbiano nomi univoci e riprova.
- amountAboveLimit : È una quantità superiore rispetto a quella supportata da <device(s)>.
- appLaunchFailed : Siamo spiacenti, non è stato possibile avviare <nome dell'app> su <dispositivo o dispositivi>.
- armFailure : Impossibile attivare <device(s)>.
- armLevelNeeded : Non so quale livello impostare per <device(s)>. Prova a dire "Imposta <dispositivo o dispositivi> su <sicurezza bassa>" o "Imposta <dispositivo o dispositivi> su <sicurezza elevata>"
- authFailure : Non riesco a raggiungere <device(s)>. Prova a controllare l'app per assicurarti che <device/devices> <is/are> completamente configurati.
- bagFull : <device(s)> <has/have> <a full bag/full bags>. Please empty <it/them> and try again.
- belowMinimumLightEffectsDuration : È inferiore alla durata minima di 5 minuti. Riprova.
- belowMinimumTimerDuration : Non riesco a impostare <device(s)> per un tempo così breve. Riprova.
- binFull : <device(s)> <has/have> <a full bin/full bins>.
- cancelArmingRestricted : Mi dispiace, non è stato possibile annullare l'attivazione dell'antifurto per <dispositivo o dispositivi>.
- cancelTooLate : Mi dispiace, è troppo tardi per annullare. Utilizza <device(s)> o l'app.
- channelSwitchFailed : Impossibile passare al canale <nome del canale>. Riprova più tardi.
- chargerIssue : Sembra che <device(s)> <has/have> <a charger issue/charger issues>.
- commandInsertFailed : Impossibile elaborare i comandi per <device(s)>.
- Batteria scarica : <device(s)> <ha/hanno> <una batteria scarica/batterie scariche>.
- degreesOutOfRange : I gradi richiesti sono fuori dall'intervallo per <device(s)>.
- deviceAlertRichiedeAssistance : <device(s)> <ha/hanno> un avviso attivo e <need(s)> la tua assistenza.
- deviceAtExtremeTemperature : <device(s)> <is/are> at <an extreme temperature/extreme temperatures>.
- deviceBusy : Mi dispiace, sembra che <device(s)> sia già in uso.
- deviceCharging : Sembra che <device(s)> non possa farlo perché (ha_shared.ItsTheyre size=$item.devices.total_device_count) è in carica.
- deviceClogged : Spiacenti, sembra che <device(s)> sia intasato.
- deviceCurrentlyDispensing : <device(s)> sta già erogando qualcosa.
- deviceDoorOpen : Lo sportello è aperto su <device(s)>. Chiudilo e riprova.
- deviceHandleClosed : L'handle è chiuso su <device(s)>. Aprilo e riprova.
- dispositivoJammingDetected : <device(s)> <è/are> ha rilevato un jamming.
- deviceLidOpen : Il coperchio è aperto su <device o dispositivi>. Chiudilo e riprova.
- deviceRichiedeRepair : <device(s)> <need(s)> da riparare. Contatta il tuo rivenditore di assistenza locale.
- deviceNotDocked : Mi dispiace, sembra che <device(s)> <non sia/non siano> agganciati alla base. Inserisci <l'accessorio/gli accessori> e riprova.
- deviceNotFound : <device(s)> <è/are>non disponibile. Prova a configurare di nuovo <l'elemento in questione>.
- deviceNotMounted : Mi dispiace, sembra che <device(s)> non possa farlo perché <it/they> <is/are>n't mounted.
- deviceNotReady : <device(s)> <is/are>n't ready.
- deviceStuck : <device(s)> <è/sono> bloccato e ha bisogno del tuo aiuto.
- deviceTampered : <device(s)> <has/have> been tampered with.
- deviceThermalShutdown : Mi dispiace, sembra che <device(s)> si sia spento a causa di temperature estreme.
- directResponseOnlyUnreachable : <device(s)> <non supporta/supportano> il controllo remoto.
- disarmFailure : Impossibile disarmare <device o dispositivi>.
- discreteOnlyOpenClose : Mi dispiace, <device(s)> possono essere solo aperti o chiusi completamente.
- dispenseAmountAboveLimit : <device(s)> non può erogare una quantità così elevata.
- dispenseAmountBelowLimit : <device(s)> non può erogare una quantità così ridotta.
- dispenseAmountottingExceeded : <device(s)> non dispone di <dispense item> sufficiente 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 l'unità per <dispense item>.
- doorClosedTooLong : È passato un po' di tempo dall'ultima apertura dello sportello di <device(s)>. Apri lo sportello, assicurati che ci sia qualcosa all'interno e riprova.
- 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)> non può raggiungere quella stanza. Sposta <it/them> al piano giusto e riprova.
- functionNotSupported : In realtà, <device(s)> <non/non> supporta questa funzionalità.
- genericheDispenseNotSupported : Devo sapere cosa vuoi distribuire. Riprova dicendo il nome dell'articolo.
- 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> currently set to auto mode. Per cambiare la temperatura, devi impostare <it/them > su un'altra modalità.
- inAwayMode : <device(s)> <is/are> currently set to away mode. Per controllare il termostato, devi attivare manualmente la modalità A casa utilizzando l'app Nest su telefono, tablet o computer.
- inDryMode : <device(s)> <è/sono> attualmente impostato sulla modalità di deumidificazione. Per cambiare la temperatura, devi impostare <it/them > su un'altra modalità.
- inEcoMode : <device(s)> <is/are> currently set to eco mode. Per cambiare la temperatura, devi impostare <it/them > su un'altra modalità.
- inFanOnlyMode : <device(s)> <is/are> currently set to fan-only mode. Per cambiare la temperatura, devi impostare <it/them > su un'altra modalità.
- inHeatOrCool : <device(s)> <is/are>n't in heat/cool mode.
- inHumidifierMode : <device(s)> <is/are> currently set to humidifier mode. Per cambiare la temperatura, devi passare <it/them> a un'altra modalità.
- 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. Per cambiare la temperatura, devi impostare <it/them > su un'altra modalità.
- inSleepMode : <device(s)> <is/are> in modalità sospensione. Riprova più tardi.
- inSoftwareUpdate : <device(s)> <is/are> currently in a software update.
- lockFailure : Impossibile bloccare <device(s)>.
- blockedState : <device(s)> <è/are> attualmente bloccato.
- restrictedToRange : La temperatura è al di fuori dell'intervallo bloccato su <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> already set to the maximum speed.
- minSettingReached : <device(s)> <is/are> è già impostato sul valore più basso.
- minSpeedReached : <device(s)> <is/are> already set to the minimum speed.
- monitoringServiceConnectionLost : <device(s)> <ha/hanno> perso <its/their> la connessione al servizio di monitoraggio.
- needAttachment : Spiacenti, sembra che in <device(s)> <is/are> manchi un allegato obbligatorio. Sostituiscila e riprova.
- needsBin : Mi dispiace, sembra che al <device(s)> manchi un contenitore. Sostituiscilo e riprova.
- needPads : <device(s)> <need(s)> nuovi pad.
- needSoftwareUpdate : <device(s)> <need(s)> un aggiornamento software.
- needWater : <device(s)> <need(s)> acqua.
- networkProfileNotRecognized : Mi dispiace, non riconosco "<network profile>" su <device(s)>.
- networkSpeedTestInProgress : Sto già testando la rete <network> <speed/speeds>>.
- noAvailableApp : Ci dispiace, sembra che <nome dell'app> non sia disponibile.
- noAvailableChannel : Sembra che il canale <nome del canale> non sia disponibile.
- noChannelSubscription : Spiacenti, non hai effettuato l'iscrizione al canale <channel name> al momento.
- noTimerExists : Mi dispiace, sembra che non ci siano timer impostati su <device(s)>.
- notSupported : Siamo spiacenti, questa modalità non è disponibile per <device(s)>.
- ostruzione rilevata : <device(s)> ha rilevato un'ostruzione.
- offline , deviceOffline : Sembra che <device(s)> non sia/no siano disponibili al momento.
- onRequiresMode : Specifica la modalità che vuoi attivare.
- passphrase errata : Spiacenti, sembra che il PIN non sia corretto.
- percentOutOfRange : Spiacenti, non posso impostare <device(s)> su <percent>.
- pinIncorrect : (passphraseIncorrect)
- rainDetected : Non ho aperto <device(s)> perché è stata rilevata pioggia.
- rangeTooClose : Queste temperature sono troppo vicine tra di loro per costituire un intervallo Caldo • Freddo per <device(s)>. Scegli temperature più distanziate.
- relinkRequired : Spiacenti, 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 le modifiche.remoteUnlockNotAllowed
- Mi dispiace, non posso sbloccare <dispositivi> da remoto.remoteControlOff
- Questa azione è attualmente disattivata. Attiva il controllo remoto su <device(s)> e riprova.childSafetyModeActive
- Questa azione è disattivata per <device(s)> quando è attiva la modalità Protezione bambini.
- Parametro facoltativo
- roomsOnDifferentFloors : <device(s)> non riesce ad arrivare in quelle stanze perché sono su piani diversi.
- safetyShutOff : <device(s)> <è/sono> in modalità di arresto di sicurezza, quindi <it/they> dovrà essere regolato a mano.
- sceneCannotBeApplied : Siamo spiacenti, non è possibile applicare <device(s)>.
- securityRestriction : <device(s)> <has/have> a security restriction.
- softwareUpdateNotAvailable : Siamo spiacenti, non sono disponibili aggiornamenti software per <device(s)>.
- startRequiresTime : Per poterlo fare devi dirmi quanto tempo impostare per <device(s)>.
- stillCoolingDown : <device(s)> <is/are> still cooling down.
- stillWarmingUp : <device(s)> <is/are> still warming up.
- streamUnavailable : Sembra che lo stream non sia al momento disponibile da <device(s)>.
- streamUnplayable : Mi dispiace, al momento non posso riprodurre lo stream da <device(s)>.
- tankEmpty : <device(s)> <has/have> <an empty tank/empty tanks>. Fill <it/them> and try again.
- targetAlreadyReached : Mi dispiace, sembra che questa sia già la temperatura attuale.
- timerValueOutOfRange : <device(s)> non può essere impostato per questo periodo di tempo.
- tooManyFailedAttempts : Mi dispiace, troppi tentativi non riusciti. Usa l'app del dispositivo per completare l'azione.
- transientError : Spiacenti, si è verificato un problema durante il controllo di <device(s)>. Riprova.
- turnedOff , deviceTurnedOff : <device(s)> <is/are> off right now.
- unableToLocateDevice : Non è stato possibile localizzare <device(s)>.
- sconosciutoFoodPreset : <device(s)> non supporta quella preimpostazione per alimenti.
- unlockFailure : Impossibile sbloccare <device(s)>.
- unpausableState : Al momento non è possibile mettere in pausa <device o dispositivi>.
- userAnnullato : ok
- valueOutOfRange : Impossibile impostare <device(s)> su quella temperatura.
Eccezioni
Devi restituire un'eccezione quando si verifica un problema o un avviso associato a un comando. Il comando potrebbe avere esito positivo o negativo.
Se il comando è andato a buon fine (status = "SUCCESS"), segnala le eccezioni utilizzando il tratto StatusReport
(per i dispositivi diversi dal target) o restituendo un exceptionCode
appropriato (per il dispositivo target).
Ad esempio, se il filtro della lanugine dell'asciugatrice è pieno, l'utente può comunque avviarla, ma ti consigliamo di avvisarlo di questo stato. Analogamente, quando la batteria di un dispositivo è in esaurimento, ma non è scarica, puoi comunque eseguire un comando, ma devi comunicare che la batteria è in esaurimento.
Se il comando non va a buon fine a causa di eccezioni, lo stato deve essere "EXCEPTIONS" e le eccezioni devono essere registrate utilizzando l'attributo 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 bloccante (SUCCESS) relativa a un altro dispositivo che utilizza StatusReport
Questo esempio è per l'abilitazione di un sistema di sicurezza: Ok, abilito 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" }] } }] } }
Eccezione di blocco relativa a 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 di eccezioni
Le seguenti eccezioni produrranno la sintesi vocale associata sul dispositivo.
- bagFull : <device(s)> <has/have> <un bagaglio pieno/borse piene>. Svuota <it/them> e riprova.
- binFull : <device(s)> <has/have> <a full bin/full bins>.
- carbonMonoxideDetected : È stato rilevato monossido di carbonio in <nome della casa>.
- 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.
- dispositivo manomesso : <device(s)> <ha/sono> stati manomessi.
- dispositivo scollegato : <device(s)> <è/sono> scollegati.
- floorUnreachable : <device(s)> non riesce ad arrivare in quella stanza. Sposta <it/them> al piano giusto e riprova.
- hardwareFailure : <device(s)> <has/have> a hardware problem.
- inSoftwareUpdate : <device(s)> <è/sono> attualmente in fase di aggiornamento software.
- 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.
- needSoftwareUpdate : <device(s)> <need(s)> un aggiornamento software.
- needsWater : <device(s)> <need(s)> water.
- networkJammingDetected : la connessione della rete di casa a <device(s)> non funziona correttamente.
- noIssuesReported : <device(s)> non ha segnalato problemi.
- roomOnDiversiFloors : <device(s)> non può raggiungere queste stanze perché si trovano su piani diversi.
- runCycleFinished : <device(s)> <has/have> terminato.
- securityRestriction : <device(s)> <has/have> a security restriction.
- fumo rilevato : È stato rilevato fumo in <nome della casa>.
- tankEmpty : <device(s)> <has/have> <un serbatoio vuoto/serbatoi vuoti>. Riempi <it/them> e riprova.
- conCellularBackup : <device(s)> <is/are> sta utilizzando il servizio di backup da rete mobile.
- waterLeakDetected : <device(s)> <detect(s)> una perdita d'acqua.