Este documento lista os erros e exceções oficialmente compatíveis com dispositivos de casa inteligente. Use esses códigos de erros e exceções na resposta da intent
ou em notificações
se você a tiver implementado. Assim, o Google Assistente alerta os usuários finais sobre problemas relacionados a um
determinado comando ou estado do dispositivo. Se a resposta tiver uma formatação incorreta ou
errorCode
, o Google Assistente vai mostrar uma mensagem de erro genérica aos usuários, por exemplo,
"Desculpe, device não está disponível no momento".
Erros
Retorne um código de erro quando um problema fizer com que uma solicitação de execução ou de consulta falhe. Por exemplo, se uma fechadura estiver emperrada e não puder ser trancada ou destrancada, um erro sobre esse estado será retornado ao usuário.
Os códigos de erro podem ser anexados no nível do dispositivo ou no nível global. Por exemplo,
se um usuário tiver muitas luzes de um provedor e for controlado por um hub, quando
ele solicitar a desativação de todas as luzes, o provedor poderá retornar um
erro no nível do dispositivo se uma única luz estiver off-line ou um erro global se
todo o hub estiver off-line e nenhuma luz puder ser controlada. Se todos os dispositivos estiverem off-line, não haverá diferença entre erros no nível global ou no nível do dispositivo. Quando um dispositivo estiver off-line, você precisará informar o estado {"online": false}
no reportState, mesmo que retorne o código do erro deviceOffline
.
Resumindo:
- Erro global: todos os dispositivos na resposta têm o mesmo erro
- Erro no nível local: resposta mista com erros e casos de sucesso
Erros de nível global
O snippet JSON a seguir mostra como retornar erros de nível global na resposta QUERY ou EXECUTE.
Um exemplo de erro de nível global deviceOffline
devido ao hub está
off-line:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "errorCode": "deviceOffline", "status" : "ERROR" } }
Um exemplo de erro de nível global inSoftwareUpdate
devido ao hub está sendo atualizado:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "errorCode": "inSoftwareUpdate", "status" : "ERROR" } }
Erros no nível do dispositivo
Resposta QUERY
O snippet JSON a seguir mostra como retornar erros no nível do dispositivo na resposta QUERY.
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "devices": { "device-id-1": { "errorCode": "deviceOffline", "status" : "ERROR" }, "device-id-2": { "errorCode": "deviceOffline", "status" : "ERROR" } } } }
EXECUTAR resposta
O snippet JSON a seguir mostra como retornar erros no nível do dispositivo na resposta EXECUTAR.
{ "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 } } ] } }
Notificações com erros
Notificação proativa
O snippet JSON a seguir mostra como informar erros no nível do dispositivo em uma notificação proativa.
{ "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" } } } } } }
Resposta de acompanhamento
O snippet JSON a seguir mostra como informar erros no nível do dispositivo em uma resposta de acompanhamento.
{ "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" } } } } } } }
Lista de erros
Os erros a seguir produzirão o TTS associado no dispositivo.
- aboveMaxLightEffectsDuration : Isso é mais do que a duração máxima de uma hora. Tente novamente.
- aboveMaxTimerDuration : Só posso definir <device(s)> por até <time period>
- actionNotAvailable : Desculpe, não posso fazer isso no momento.
- actionUnavailableHowRunning : <device(s)> <is/are> are running, so I can't make any changes.
- alreadyArmed : <device(s)> <is/are> already armed
- alreadyAtMax : <device(s)> <is/are> already set to the maximum temperatura.
- alreadyAtMin : <device(s)> <is/are> already set to the minimum term.
- alreadyClosed : <device(s)> <is/are> already closed
- alreadyDisarmed : <device(s)> <is/are> already armed
- alreadyDocked : <device(s)> <is/are> already docked
- alreadyInState : <device(s)> <is/are> already in this state.
- alreadyBlocked : <device(s)> <is/are> already blocked
- alreadyOff : <device(s)> <is/are> already off.
- alreadyOn : <device(s)> <is/are> already on.
- alreadyOpen : <device(s)> <is/are> already open.
- alreadyPaused : <device(s)> <is/are> already paused.
- alreadyStarted : <device(s)> <is/are> already started.
- alreadyStopped : <device(s)> <is/are> already stopped.
- alreadyUnlocked : <device(s)> <is/are> already desbloqueado.
- semanticZoneName : <device(s)> não consegue identificar a zona em questão. Verifique se as zonas têm nomes exclusivos e tente novamente.
- amountAboveLimit : Isso é mais do que <device(s)> é compatível.
- appLaunchFailed : Falha ao iniciar o <nome do app> em <device(s)>.
- armFailure : <device(s)> não pôde ser ligado.
- armLevelNeeded : Não sei em que nível definir <device(s)>. Tente dizer "Definir <dispositivo(s)> para <segurança baixa>" ou "Definir <dispositivo(s)> para <segurança alta>"
- authFailure : Não consigo acessar <device(s)>. Verifique o app para verificar se <device/devices> <is/are> está totalmente configurado.
- bagFull : <device(s)> <has/have> <a full bag/full bolsas>. Esvazie <it/them> e tente novamente.
- belowMinimumLightEffectsDuration : É menor que a duração mínima de cinco minutos. Tente novamente.
- belowMinimumTimerDuration : Não consigo definir <device(s)> por um período de tempo tão curto. Tente novamente.
- binFull : <device(s)> <has/have> <a full bin/full bins>.
- cancelArmingRestricted : Não foi possível cancelar a ativação dos <device(s)>.
- cancelTooLate : É tarde demais para cancelar. Use <device(s)> ou o app.
- channelSwitchFailed : Não foi possível alternar para o canal <nome do canal>. Tente novamente mais tarde.
- carregadorIssue : Parece que <device(s)> <has/have> <a carregador issue/charger issues>.
- commandInsertFailed : Não foi possível processar comandos para <dispositivo(s)>.
- deadBattery : <device(s)> <has/have> <a dead bateria/dead baterias>.
- degreesOutOfRange : os graus solicitados estão fora do intervalo permitido para <device(s)>.
- deviceAlertNeedsAssistance : <device/s> tem um alerta ativo e <precisa(m)> de ajuda.
- deviceAtExtremeTemperature : <device(s)> <is/are> a <extrem temperatura extrema/extrema temperatura>.
- deviceBusy : Parece que <device(s)> já está fazendo algo no momento.
- deviceCharge : Parece que <device(s)> não pode fazer isso porque (ha_shared.ItsYoure size=$item.devices.total_device_count) está carregando.
- deviceClogged : Parece que <device(s)> está entupido.
- deviceCurrentDispensing : <device(s)> já está liberando algo no momento.
- deviceDoorOpen : A porta está aberta em <device(s)>. Feche-a e tente novamente.
- deviceHandleClosed : O identificador está fechado em <device(s)>. Abra-o e tente novamente.
- deviceJammingDetected : <device(s)> <is/are> jammed.
- deviceLidOpen : A tampa está aberta em <device(s)>. Feche-a e tente novamente.
- deviceNeedsRepair : <device(s)> <need(s)> para ser reparado. Entre em contato com sua concessionária de serviços locais.
- deviceNotDocked : Parece que <device(s)> <isn't/aren't> dock's. Coloque <it/elas> e tente novamente.
- deviceNotFound : <device(s)> <is/are>não está disponível. Tente configurar o app <it/them> novamente.
- deviceNotMounted : Parece que <device(s)> não pode fazer isso porque <it/does> <is/are>não está montado.
- deviceNotReady : <device(s)> <is/are>n't ready.
- deviceStuck : <device(s)> <is/are> travado e precisa da sua ajuda.
- deviceTampered : <device(s)> <tem/foi> adulterado.
- deviceThermalShutdown : Parece que os dispositivos <device(s)> foram desligados devido a temperaturas extremas.
- directResponseOnlyUnreachable : o <device(s)> <não é compatível com/ou não> o controle remoto.
- disarmFailure : <device(s)> não pôde ser desligado.
- discreteOnlyOpenClose : <device(s)> só pode ser aberto ou fechado completamente.
- dispenseAmountAboveLimit : <device(s)> não pode distribuir uma quantidade tão grande.
- dispenseAmountUNDERLimit : <device(s)> não pode distribuir uma quantidade tão pequena.
- dispenseAmountRemainingExceeded : <device(s)> não tem <dispense item> suficiente para fazer isso.
- dispenseFractionalAmountNotSupported : <device(s)> não pode distribuir frações de <dispense item>.
- dispenseFractionalUnitNotSupported : <device(s)> não suporta frações dessa unidade para <dispense item>.
- dispenseUnitNotSupported : <device(s)> não suporta essa unidade para <dispense item>.
- doorClosedTooLong : Já faz algum tempo desde que a porta em <device(s)> foi aberta. Abra a porta, verifique se há algo dentro e tente novamente.
- EmergencyHeatOn : <device(s)> <is/are> no Modo de Aquecimento de Emergência, então <it/Eles> precisarão ser ajustados manualmente.
- defeito da bateria : <dispositivo(s)> <tem/tem> <uma bateria com defeito/baterias com defeito>.
- floorUnreachable : <device(s)> não consegue chegar a esse cômodo. Mova <it/elas> para o andar correto e tente novamente.
- functionNotSupported : Na verdade, <device(s)> <não oferece/não oferece suporte a essa funcionalidade.
- generalDispenseNotSupported : Preciso saber o que você deseja distribuir. Tente novamente com o nome do item.
- hardError : Algo deu errado e não consigo controlar seu dispositivo doméstico.
- hardError : Algo deu errado e não consigo controlar seu dispositivo doméstico.
- inAutoMode : <device(s)> <is/are> está configurado no modo automático no momento. Para mudar a temperatura, escolha outra opção.
- inAwayMode : <device(s)> <is/are> no momento está definido como modo ausente. Para controlar o termostato, alterne-o manualmente para o modo "Em casa" usando o app Nest em um smartphone, tablet ou computador.
- inDryMode : <device(s)> <is/are> atualmente definido para o modo seco. Para mudar a temperatura, escolha outra opção.
- inEcoMode : <device(s)> <is/are> atualmente configurado para o modo econômico. Para mudar a temperatura, escolha outra opção.
- inFanOnlyMode : <device(s)> <is/are> atualmente definido como modo somente ventilador. Para mudar a temperatura, escolha outra opção.
- inHeatOrCool : <device(s)> <is/are>not's in heat/cool mode.
- inHumidifierMode : <device(s)> <is/are> atualmente definido para o modo de umidificador. Para mudar a temperatura, escolha outra opção.
- inOffMode : <device(s)> <is/are> off desativado. Para mudar a temperatura, escolha <it/them> para um modo diferente.
- inPurifierMode : <device(s)> <is/are> atualmente definido para o modo purificador. Para mudar a temperatura, escolha outra opção.
- inSleepMode : <device(s)> <is/are> no modo de espera. Tente de novo mais tarde.
- inSoftwareUpdate : <dispositivo(s)> <está/estão> no momento em uma atualização de software.
- lockFailure : <device(s)> não pôde ser bloqueado.
- lockState : <device(s)> <is/are> locked.
- lockToRange : essa temperatura está fora do intervalo bloqueado em <device(s)>.
- lowBattery : <device(s)> <has/have> low bateria.
- maxSettingReached : <device(s)> <is/are> already set to the high setting.
- maxSpeedReached : <device(s)> <is/are> already set to the maximum speed.
- minSettingReached : <device(s)> <is/are> already set to the low setting.
- minSpeedReached : <device(s)> <is/are> already set to the minimum speed.
- MonitoringServiceConnectionLost : <device(s)> <tem/tem> perdeu a conexão <its/intl> com o serviço de monitoramento.
- needAttachment : Parece que <device(s)> <is/are> não tem um anexo obrigatório. Substitua e tente novamente.
- needBin : Parece que há <device/>> lixeira. Substitua e tente novamente.
- needPads : <device(s)> <need(s)> new pads.
- needSoftwareUpdate : <device(s)> <need(s)> uma atualização de software.
- NeedWater : <device(s)> <need(s)> water.
- networkProfileNotRecognized : Não reconheço "<network profile>" em <device(s)>.
- networkSpeedTestInProgress : Já estou testando a <network> <speed/speeds>>.
- noAvailableApp : Parece que <nome do aplicativo> não está disponível.
- noAvailableChannel : Parece que o canal <channel name> não está disponível.
- noChannelSubscription : No momento, você não está inscrito no canal <channel name>.
- noTimerExists : Parece que não há nenhum timer definido em <device(s)>.
- notSupported : Esse modo não está disponível para <device(s)>.
- obstructionDetected : <device(s)> detectou uma obstrução.
- offline , deviceOffline : Parece que <device(s)> <is/are>não estão disponíveis no momento.
- onRequiresMode : Especifique qual modo você quer ativar.
- PasswordIncorreto : Parece que esse PIN está incorreto.
- percentOutOfRange : Não é possível definir <device(s)> como <percent>.
- PinIncorreto : (passphraseIncorreto)
- rainDetected : Não abri o <device(s)> porque foi detectada chuva.
- rangeTooClose : Essas opções estão muito próximas para um intervalo de aquecimento/refrigeração para <device(s)>. Escolha temperaturas mais distantes entre si.
- relinkRequired : Parece que algo deu errado com sua conta. Use o app Google Home ou Google Assistente para vincular novamente <device(s)>.
-
remoteSetDisabled
:
- Parâmetro opcional
errorCodeReason
currentlyArmed
- Como a segurança já está ativada, você precisa usar <device(s)> ou o app para fazer mudanças.remoteUnlockNotAllowed
- Não é possível desbloquear <device(s)> remotamente.remoteControlOff
- Essa ação está desativada no momento. Ative o controle remoto em <device(s)> e tente novamente.childSafetyModeActive
: essa ação é desativada para <device(s)> enquanto o modo de segurança infantil está ativado.
- Parâmetro opcional
- roomOnDiffFloors : <device(s)> não pode chegar a essas salas porque estão em andares diferentes.
- SafetyShutOff : <device(s)> <is/are> no Modo de desativação de segurança. Portanto, <it/does> terá que ser ajustados manualmente.
- SceneCannotBeApplied : Não é possível aplicar <device(s)>.
- SecurityRestriction : <device(s)> <tem/tem> uma restrição de segurança.
- softwareUpdateNotAvailable : Não há uma atualização de software disponível em <device(s)>.
- startRequiresTime : Para fazer isso, você precisa me dizer por quanto tempo quer executar <device(s)>.
- stillCoolingDown : <device(s)> <está/está> ainda resfriando.
- stillWarmingUp : <device(s)> <is/are> continuam aquecendo.
- streamUnavailable : No momento, parece que o fluxo não está disponível em <dispositivo(s)>.
- streamUnplayable : Não consigo reproduzir o stream de <device(s)> no momento.
- tankEmpty : <device(s)> <has/have> <an empty tank/empty tanks>. Abasteça <it/them> e tente novamente.
- targetAlreadyReached : Parece que essa já é a temperatura atual.
- timerValueOutOfRange : <device(s)> não pode ser definido para esse período.
- tooManyFailedAttempts : Muitas tentativas com falha. Acesse o app no seu dispositivo para concluir a ação.
- transientError : Ocorreu um erro ao controlar <device(s)>. Tente novamente.
- offOff , deviceTurnedOff : <device(s)> <is/are> off no momento.
- unableToLocalizarDevice : Não consegui localizar <device(s)>.
- UnknownFoodPreset : <device(s)> não é compatível com essa predefinição para alimentos.
- UnlockFailure : <device(s)> não pôde ser desbloqueado.
- unpausebleState : <device(s)> não pode ser pausado no momento.
- UserCancelled : ok
- valueOutOfRange : <device(s)> não pode ser definido para essa temperatura.
Exceções
Retorne uma exceção quando houver um problema ou alerta associado a um comando. O comando pode ser bem-sucedido ou falhar.
Se o comando for bem-sucedido (status = "SUCCESS"), informe as exceções usando a característica StatusReport
(para dispositivos diferentes do destino) ou retornando um exceptionCode
apropriado (para o dispositivo de destino).
Por exemplo, se a tela do lint estiver totalmente cheia, o usuário ainda poderá iniciar o secador, mas talvez você queira avisá-lo sobre esse estado. Da mesma forma, quando um dispositivo tem uma bateria fraca que não está vazia, você ainda pode executar um comando, mas precisa informar que a bateria está fraca.
Se o comando falhar devido a exceções, o status será "EXCEPTIONS" e as exceções precisarão ser relatadas usando a característica StatusReport
.
Exceção sem bloqueio (SUCCESS) no dispositivo de destino
Este exemplo é para trancar a porta:
A trava da porta da frente está fraca. Trancando a porta da frente.
{ "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" } }] } }
Exceção sem bloqueio (SUCCESS) em outro dispositivo usando o StatusReport
Este exemplo é para ligar um sistema de segurança: OK, ligando o sistema de segurança. A janela da frente está aberta.
{ "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" }] } }] } }
Bloquear a exceção sobre outro dispositivo usando o 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" } ] } } } }
Lista de exceções
As exceções a seguir produzirão o TTS associado no dispositivo.
- bagFull : <device(s)> <has/have> <a full bag/full bolsas>. Esvazie <it/them> e tente novamente.
- binFull : <device(s)> <has/have> <a full bin/full bins>.
- CarbonMonoxideDetected : O monóxido de carbono foi detectado em <house name>.
- deviceAtExtremeTemperature : <device(s)> <is/are> a <extrem temperatura extrema/extrema temperatura>.
- deviceJammingDetected : <device(s)> <is/are> jammed.
- deviceMoved : <device(s)> <was/were> moved.
- deviceOpen : <device(s)> <is/are> open.
- deviceTampered : <device(s)> <tem/foi> adulterado.
- deviceUnplugged : <device(s)> <is/are> unplugged.
- floorUnreachable : <device(s)> não consegue chegar a esse cômodo. Mova <it/elas> para o andar correto e tente novamente.
- hardwareFailure : <device(s)> <has/have> a hardware problem.
- inSoftwareUpdate : <dispositivo(s)> <está/estão> no momento em uma atualização de software.
- isSkips : <device(s)> <is/are> no momento foi ignorado.
- lowBattery : <device(s)> <has/have> low bateria.
- "MotionDetected" : <device(s)> <detect(s)> movimento.
- needPads : <device(s)> <need(s)> new pads.
- needSoftwareUpdate : <device(s)> <need(s)> uma atualização de software.
- NeedWater : <device(s)> <need(s)> water.
- networkJammingDetected : a conexão de rede doméstica com <device(s)> não está funcionando corretamente.
- noIssuesReported : <device(s)> nenhum problema relatado.
- roomOnDiffFloors : <device(s)> não pode chegar a essas salas porque estão em andares diferentes.
- RunCycleFinished : <dispositivo(s)> <concluiu/concluiu a execução.
- SecurityRestriction : <device(s)> <tem/tem> uma restrição de segurança.
- fumaçaDetected : Fumaça foi detectada em <nome da casa>.
- tankEmpty : <device(s)> <has/have> <an empty tank/empty tanks>. Abasteça <it/them> e tente novamente.
- usingCellularBackup : <device(s)> <is/are> using backup da rede celular.
- waterLeakDetected : <device(s)> <detect(s)> um vazamento de água.