Este documento lista os erros e exceções oficialmente aceitos em
dispositivos de casa. Use os erros e códigos de exceção fornecidos na intent
resposta ou em notificações
caso tenha sido implementado. Assim, o Google Assistente alerta os usuários finais sobre problemas relacionados a uma
em um determinado comando ou estado do dispositivo. Se a resposta tiver formatação incorreta ou
errorCode
, o Google Assistente mostra uma mensagem de erro genérica aos usuários, por exemplo:
"device não está disponível no momento".
Erros
Você deve retornar um código de erro quando um problema causar uma execução ou solicitação de consulta falhe. Por exemplo, se uma fechadura de porta estiver emperrada e não puder ser bloqueado ou desbloqueado, um erro sobre esse estado deverá ser retornado ao usuário.
Os códigos de erro podem ser anexados no nível do dispositivo ou global. Por exemplo:
se um usuário tiver muitas luzes de um fornecedor e elas forem controladas por um hub,
o usuário pedir para apagar todas as luzes, o fornecedor poderá retornar uma
um erro no nível do dispositivo se uma única luz estiver off-line, ou um erro em nível global se
o hub inteiro está off-line e nenhuma luz pode ser controlada. Se todos
dispositivos estiverem off-line, não há diferença entre usar no nível global ou do dispositivo
erros. Quando um dispositivo estiver off-line, você deverá informar o estado {"online": false}
em
reportState mesmo que você retorne o
Código de erro deviceOffline
.
Resumindo:
- Erro de nível global: todos os dispositivos na resposta têm o mesmo erro
- Erro no nível local: resposta mista com casos de erro e sucesso
Erros de nível global
O snippet JSON a seguir mostra como retornar erros de nível global em QUERY ou EXECUTE.
Um exemplo de erro global deviceOffline
devido ao hub é
off-line:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "errorCode": "deviceOffline", "status" : "ERROR" } }
Um exemplo de erro global inSoftwareUpdate
devido ao hub é
atualizando:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "errorCode": "inSoftwareUpdate", "status" : "ERROR" } }
Erros no dispositivo
Resposta de QUERY
O snippet JSON a seguir mostra como retornar erros no nível do dispositivo na 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 EXECUTAR resposta.
{ "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.
- aboveMaximumLightEffectsDuration : É mais do que a duração máxima de 1 hora. Tente de novo.
- aboveMaximumTimerDuration : Só consigo configurar <device(s)> por até <time period>
- actionNotAvailable : Não consigo fazer isso no momento.
- actionUnavailableWhileRunning : <device(s)> <is/are> em execução no momento, então não posso fazer mudanças.
- alreadyArmed : <device(s)> <is/are> já está ligado.
- alreadyAtMax : <device(s)> <is/are> já definida para a temperatura máxima.
- alreadyAtMin : <device(s)> <is/are> já está definida para a temperatura mínima.
- alreadyClosed : <device(s)> <is/are> já está fechado.
- alreadyDisarmed : <device(s)> <is/are> já está desligado.
- alreadyDocked : <device(s)> <is/are> já está na base.
- alreadyInState : <device(s)> <is/are> já estão nesse estado.
- alreadyLocked : <device(s)> <is/are> já está bloqueado.
- alreadyOff : <device(s)> <is/are> já está desativado.
- alreadyOn : <device(s)> <is/are> já está ativado.
- alreadyOpen : <device(s)> <is/are> já está aberto.
- alreadyPaused : <device(s)> <is/are> já está pausado.
- alreadyStarted : <device(s)> <is/are> já começou.
- alreadyStopped : <device(s)> <is/are> já parou.
- alreadyUnlocked : <device(s)> <is/are> já está desbloqueado.
- ambiguousZoneName : Desculpe, <device(s)> não consegue identificar a zona a que você se refere. Verifique se as zonas têm nomes exclusivos e tente de novo.
- amountAboveLimit : Isso é mais do que <device(s)> suporte.
- appLaunchFailed : Falha ao iniciar o <nome do app> em <device(s)>.
- armFailure : <device(s)> e não foi possível ligá-lo.
- armLevelNeeded : Não sei em que nível configurar <device(s)> Tente dizer "Definir <dispositivos(s)> para <baixa segurança>" ou "Definir <dispositivos> para <alta segurança>"
- authFailure : Não consigo acessar <device(s)>. Confira o app para conferir se o seu <device/devices> <is/are> esteja totalmente configurado.
- bagFull : <device(s)> <has/have> <sacola cheia/sacos cheios>. Esvazie <it/los> e tente de novo.
- belowMinimumLightEffectsDuration : É menos do que a duração mínima de 5 minutos. Tente de novo.
- belowMinimumTimerDuration : Não consigo configurar <device(s)> por tão pouco tempo. Tente de novo.
- binFull : <device(s)> <has/have> <uma caixa cheia/compartimentos cheios>.
- cancelArmingRestricted : Não foi possível cancelar a ligação de <device(s)>.
- cancelTooLate : Não é mais possível cancelar. Usar <device(s)> ou pelo app.
- channelSwitchFailed : Falha ao alternar para o canal <nome do canal>. Tente de novo mais tarde.
- chargerIssue : Parece que parece um <device(s)> <has/have> <um problema no carregador/problemas no carregador>.
- commandInsertFailed : Não foi possível processar comandos para <device(s)>.
- deadBattery : <device(s)> <has/have> <pilhas sem bateria/pilhas sem bateria>.
- degreesOutOfRange : Os graus solicitados estão fora do intervalo para <device(s)>.
- deviceAlertNeedsAssistance : <device(s)> <has/have> um alerta ativo e <necessidades> sua ajuda.
- deviceAtExtremeTemperature : <device(s)> <is/are> a <uma temperatura extrema/temperatura extrema>.
- deviceBusy : Parece que parece um <device(s)> já está fazendo algo no momento.
- deviceCharging : Parece que parece um <device(s)> não podem fazer isso porque (ha_shared.ItsTellre size=$item.devices.total_device_count) carregando.
- deviceClogged : Parece que parece um <device(s)> está entupido.
- deviceCurrentlyDispensing : <device(s)> já está liberando algo no momento.
- deviceDoorOpen : A porta está aberta em <device(s)>. Feche e tente de novo.
- deviceHandleClosed : A alça está fechada em <device(s)>. Abra e tente de novo.
- deviceJammingDetected : <device(s)> <is/are> emperrada.
- deviceLidOpen : A tampa está aberta em <device(s)>. Feche e tente de novo.
- deviceNeedsRepair : <device(s)> <need(s)> que não precisa ser reparado. Entre em contato com ela.
- deviceNotDocked : Parece que parece um <device(s)> <não é/não é> na base. Coloque <it/eles> na base e tente de novo.
- deviceNotFound : <device(s)> <não/não estão> disponíveis. Você pode tentar configurar <it/them> para cima de novo.
- deviceNotMounted : Parece que parece um <device(s)> não podemos fazer isso porque <it/Eles> não estão montados.
- deviceNotReady : <device(s)> <está/não está>pronto.
- deviceStuck : <device(s)> <is/are> não consegue resolver e precisa da sua ajuda.
- deviceTampered : <device(s)> <has/have> adulterados.
- deviceThermalShutdown : Parece que parece um <device(s)> por causa de temperaturas extremas.
- directResponseOnlyUnreachable : <device(s)> <não faz/não faz> oferecer suporte ao controle remoto.
- disarmFailure : <device(s)> Não foi possível desligar.
- discreteOnlyOpenClose : Desculpe, <device(s)> só pode ser aberto ou fechado totalmente.
- dispenseAmountAboveLimit : <device(s)> não libera uma grande quantidade.
- dispenseAmountBelowLimit : <device(s)> não consegue liberar uma quantidade tão pequena.
- dispenseAmountRemainingExceeded : <device(s)> não tem <dispense item> suficiente para isso.
- dispenseFractionalAmountNotSupported : <device(s)> não é possível liberar frações de <disense item>.
- dispenseFractionalUnitNotSupported : <device(s)> não é compatível com frações dessa unidade para <dispense item>.
- dispenseUnitNotSupported : <device(s)> não oferece suporte a essa unidade para <dispens item>.
- doorClosedTooLong : Já faz algum tempo desde a porta em <device(s)> foi aberto. Abra a porta, confira se tem algo dentro e tente de novo.
- emergencyHeatOn : <device(s)> <is/are> no modo de aquecimento de emergência. É necessário ajustar manualmente <it/eles>.
- faultyBattery : <device(s)> <has/have> <uma bateria com defeito/baterias com defeito>.
- floorUnreachable : <device(s)> não consegue chegar lá. Mova <it/eles> para o andar certo e tente novamente.
- functionNotSupported : Na verdade, <device(s)> <não faz/não faz> dão suporte a essa funcionalidade.
- genericDispenseNotSupported : Preciso saber o que você quer dar. Tente novamente com o nome do item.
- hardError : Algo deu errado e não foi possível controlar seu dispositivo doméstico.
- hardError : Algo deu errado e não foi possível controlar seu dispositivo doméstico.
- inAutoMode : <device(s)> <is/are> está no modo automático. Para mudar a temperatura, você precisa alternar <it/them> para um modo diferente.
- inAwayMode : <device(s)> <is/are> está no modo de ausência. Para controlar o termostato, alterne manualmente para o modo "Em casa" usando o app Nest em um smartphone, tablet ou computador.
- inDryMode : <device(s)> <is/are> o modo desumidificador está ativado. Para mudar a temperatura, você precisa alternar <it/them> para um modo diferente.
- inEcoMode : <device(s)> <is/are> está no modo econômico. Para mudar a temperatura, você precisa alternar <it/them> para um modo diferente.
- inFanOnlyMode : <device(s)> <is/are> está no modo ventilador. Para mudar a temperatura, você precisa alternar <it/them> para um modo diferente.
- inHeatOrCool : <device(s)> <está/não> está no modo Aquecer/Resfriar.
- inHumidifierMode : <device(s)> <is/are> está no modo umidificador. Para mudar a temperatura, você precisa alternar <it/them> para um modo diferente.
- inOffMode : <device(s)> <is/are> desativado no momento. Para mudar a temperatura, você precisa alternar <it/them> para um modo diferente.
- inPurifierMode : <device(s)> <is/are> está no modo purificador. Para mudar a temperatura, você precisa alternar <it/them> para um modo diferente.
- inSleepMode : <device(s)> <is/are> em modo de espera. Tente novamente mais tarde.
- inSoftwareUpdate : <device(s)> <is/are> em uma atualização de software.
- lockFailure : <device(s)> não foi possível bloqueá-lo.
- lockedState : <device(s)> <is/are> bloqueado no momento.
- lockedToRange : Essa temperatura está fora do intervalo determinado em <device(s)>.
- lowBattery : <device(s)> <has/have> bateria fraca.
- maxSettingReached : <device(s)> <is/are> já está definida para a configuração mais alta.
- maxSpeedReached : <device(s)> <is/are> já esteja definido para a velocidade máxima.
- minSettingReached : <device(s)> <is/are> já está definida para a configuração mais baixa.
- minSpeedReached : <device(s)> <is/are> já definida para a velocidade mínima.
- monitoringServiceConnectionLost : <device(s)> <has/have> perdeu<sua/deles> ao serviço de monitoramento.
- needsAttachment : Parece que parece um <device(s)> <is/are> não há um anexo obrigatório. Substitua e tente novamente.
- needsBin : Parece que parece um <device(s)> <is/are> não há um agrupamento. Substitua e tente novamente.
- needsPads : <device(s)> <need(s)> pads novos.
- needsSoftwareUpdate : <device(s)> <need(s)> uma atualização de software.
- needsWater : <device(s)> <need(s)> água.
- networkProfileNotRecognized : Não reconheço "<perfil de rede>" em <device(s)>.
- networkSpeedTestInProgress : Já estou testando a rede <network> <speed/speeds>>.
- noAvailableApp : Parece que parece o <app name> não estiver disponível.
- noAvailableChannel : Parece que o canal <channel name> não estiver disponível.
- noChannelSubscription : Você não está inscrito no canal <channel name> no momento.
- noTimerExists : Parece que não há nenhum timer definido em <device(s)>.
- notSupported : Este modo não está disponível para <device(s)>.
- obstructionDetected : <device(s)> uma obstrução foi detectada.
- off-line , deviceOff-line : Parece que parece um <device(s)> <não está disponível no momento.
- onRequiresMode : Especifique qual modo você quer ativar.
- passphraseIncorrect : Parece que esse PIN está incorreto.
- percentOutOfRange : Desculpe, não consigo configurar <device(s)> como <percent>.
- pinIncorrect : (passphraseIncorrect)
- rainDetected : Não abri <device(s)> porque foi detectada chuva.
- rangeTooClose : Esses dispositivos estão próximos demais 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 <device(s)> novamente.
-
remoteSetDisabled
:
- Parâmetro opcional
errorCodeReason
currentlyArmed
- Como o sistema de segurança já está ligado, você precisa usar <device(s)> ou o app para fazer mudanças.remoteUnlockNotAllowed
- Desculpe, não consigo desbloquear <device(s)> remotamente.remoteControlOff
- Essa ação está desativada no momento. Ative o controle remoto em <device(s)> e tente de novo.childSafetyModeActive
- Esta ação está desativada para <device(s)> enquanto o modo de segurança infantil está ativo.
- Parâmetro opcional
- roomsOnDifferentFloors : <device(s)> não podem chegar a esses quartos porque eles estão em andares diferentes.
- safetyShutOff : <device(s)> <is/are> no modo de desligamento de segurança, então <ele/eles> terão que ser ajustados manualmente.
- sceneCannotBeApplied : Desculpe, <device(s)> não podem ser aplicadas.
- securityRestriction : <device(s)> <has/have> uma restrição de segurança.
- softwareUpdateNotAvailable : Não há nenhuma atualização de software disponível para <device(s)>.
- startRequiresTime : Para fazer isso, você precisa me dizer por quanto tempo você gostaria de executar <device(s)>.
- stillCoolingDown : <device(s)> <is/are> esfriando.
- stillWarmingUp : <device(s)> <is/are> ainda se preparando.
- streamUnavailable : Parece que a transmissão está indisponível em <device(s)>.
- streamUnplayable : Não consigo reproduzir a transmissão de <device(s)> no momento.
- tankEmpty : <device(s)> <has/have> <tanques vazios/tanques vazios>. Preencha <it/your> e tente de novo.
- targetAlreadyReached : Parece que essa já é a temperatura atual.
- timerValueOutOfRange : <device(s)> não podem ser definidas para esse período.
- tooManyFailedAttempts : Infelizmente muitas tentativas com falha. Acesse o app do dispositivo para concluir essa ação.
- transientError : Ocorreu um erro ao controlar <device(s)>. Tente de novo.
- turnedOff , deviceTurnedOff : <device(s)> <is/are> agora.
- unableToLocateDevice : Não foi possível localizar <device(s)>.
- unknownFoodPreset : <device(s)> não oferece suporte a essa predefinição de alimentos.
- unlockFailure : <device(s)> que não foi desbloqueado.
- unpausableState : <device(s)> não pode ser pausada no momento.
- userCancelled : OK
- valueOutOfRange : <device(s)> não pode ser definida para essa temperatura.
Exceções
Você deve retornar uma exceção quando houver um problema ou alerta associado a uma kubectl. O comando pode funcionar ou falhar.
Se o comando tiver sido 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 de lint da secadora estiver cheia, o usuário ainda poderá iniciar o secador, mas talvez você queira avisá-los sobre esse estado. Da mesma forma, quando um o dispositivo estiver com a bateria fraca que não está descarregada, ainda será possível executar um comando mas precisa informar que a bateria está fraca.
Se o comando falhar devido a exceções, o status deverá ser "EXCEPTIONS",
e as exceções precisam ser informadas usando o atributo StatusReport
.
Exceção sem bloqueio (SUCCESS) no dispositivo de destino
Este exemplo é para trancar a porta:
A trava da porta da frente está com a bateria 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 (SUCESSO) sobre outro dispositivo que usa 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" }] } }] } }
Exceção de bloqueio 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> <sacola cheia/sacos cheios>. Esvazie <it/los> e tente de novo.
- binFull : <device(s)> <has/have> <uma caixa cheia/compartimentos cheios>.
- carbonMonoxideDetected : Monóxido de carbono foi detectado em <nome da casa>.
- deviceAtExtremeTemperature : <device(s)> <is/are> a <uma temperatura extrema/temperatura extrema>.
- deviceJammingDetected : <device(s)> <is/are> emperrada.
- deviceMoved : <device(s)> <was/were> movidos.
- deviceOpen : <device(s)> <is/are> aberta.
- deviceTampered : <device(s)> <has/have> adulterados.
- deviceUnplugged : <device(s)> <is/are> desconectados.
- floorUnreachable : <device(s)> não consegue chegar lá. Mova <it/eles> para o andar certo e tente novamente.
- hardwareFailure : <device(s)> <has/have> um problema de hardware.
- inSoftwareUpdate : <device(s)> <is/are> em uma atualização de software.
- isBypassed : <device(s)> <is/are> ignorado no momento.
- lowBattery : <device(s)> <has/have> bateria fraca.
- motionDetected : <device(s)> <detect(s)> movimento.
- needsPads : <device(s)> <need(s)> pads novos.
- needsSoftwareUpdate : <device(s)> <need(s)> uma atualização de software.
- needsWater : <device(s)> <need(s)> água.
- networkJammingDetected : a conexão de rede doméstica para <device(s)> não estiver funcionando corretamente.
- noIssuesReported : <device(s)> não relataram problemas.
- roomsOnDifferentFloors : <device(s)> não podem chegar a esses quartos porque eles estão em andares diferentes.
- runCycleFinished : <device(s)> <has/have> terminar de correr.
- securityRestriction : <device(s)> <has/have> uma restrição de segurança.
- smokeDetected : Fumaça foi detectada em <nome da casa>.
- tankEmpty : <device(s)> <has/have> <tanques vazios/tanques vazios>. Preencha <it/your> e tente de novo.
- usingCellularBackup : <device(s)> <is/are> usando o backup celular.
- waterLeakDetected : <device(s)> <detect(s)> um vazamento de água.