En este documento, se enumeran las excepciones y los errores admitidos oficialmente para las
dispositivos de la casa. Usa estos códigos de errores y excepciones en el intent.
respuesta o en las notificaciones
si las implementaste, para que Asistente de Google alerte a los usuarios finales sobre problemas relacionados con un
determinado comando o estado del dispositivo. Si la respuesta contiene un formato incorrecto o
errorCode
, Asistente de Google muestra a los usuarios un mensaje de error genérico, por ejemplo:
"Lo sentimos, device no está disponible en este momento".
Errores
Deberías mostrar un código de error cuando un problema cause una ejecución que la solicitud de consulta falle. Por ejemplo, si la cerradura de una puerta está atascada y no se puede bloqueado o desbloqueado, se debería mostrar un error sobre este estado al usuario.
Los códigos de error se pueden adjuntar a nivel del dispositivo o a nivel global. Por ejemplo:
si un usuario tiene muchas lámparas de un proveedor y las controla un concentrador, cuando
el usuario pide apagar todas las luces, el proveedor puede devolver
error a nivel del dispositivo si una sola luz no tiene conexión, o error a nivel global si
toda la unidad central está sin conexión y no se puede controlar ninguna luz. Si todos los
dispositivos sin conexión, no hay diferencia entre usar el nivel global o el nivel
errores. Cuando un dispositivo no tiene conexión, debes informar el estado de {"online": false}
en
reportState aun si devuelvas el
Código de error deviceOffline
.
Resumen:
- Error de nivel global: Todos los dispositivos de la respuesta tienen el mismo error.
- Error de nivel local: respuesta mixta con casos de éxito y errores
Errores a nivel global
El siguiente fragmento de JSON muestra cómo mostrar errores a nivel global en QUERY o EXECUTE.
Este es un ejemplo de un error de nivel global deviceOffline
debido al concentrador:
sin conexión:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "errorCode": "deviceOffline", "status" : "ERROR" } }
Este es un ejemplo de un error de nivel global inSoftwareUpdate
debido al concentrador:
actualizando:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "errorCode": "inSoftwareUpdate", "status" : "ERROR" } }
Errores a nivel del dispositivo
Respuesta de QUERY
El siguiente fragmento de JSON muestra cómo devolver errores a nivel de dispositivo en la Respuesta de QUERY.
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "devices": { "device-id-1": { "errorCode": "deviceOffline", "status" : "ERROR" }, "device-id-2": { "errorCode": "deviceOffline", "status" : "ERROR" } } } }
respuesta EXECUTE
El siguiente fragmento de JSON muestra cómo devolver errores a nivel de dispositivo en la 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 } } ] } }
Notificaciones con errores
Notificación proactiva
El siguiente fragmento de JSON muestra cómo informar errores a nivel del dispositivo en una notificaciones proactivas.
{ "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" } } } } } }
Respuesta de seguimiento
El siguiente fragmento de JSON muestra cómo informar errores a nivel del dispositivo en una respuesta de seguimiento.
{ "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 errores
Los siguientes errores generarán el TTS asociado en el dispositivo.
- aboveMaximumLightEffectsDuration : El valor es superior a la duración máxima de 1 hora. Vuelve a intentarlo.
- aboveMaximumTimerDuration : Solo puedo configurar <device(s)> por hasta <time period>
- actionNotAvailable : Lo siento, no puedo hacer eso en este momento.
- actionUnavailableWhileRunning : <device(s)> <is/are> Actualmente se está ejecutando, por lo que no puedo hacer ningún cambio.
- alreadyArmed : <device(s)> <is/are> ya está activado.
- alreadyAtMax : <device(s)> <is/are> ya está establecida en la temperatura máxima.
- alreadyAtMin : <device(s)> <is/are> ya está establecida en la temperatura mínima.
- alreadyClosed : <device(s)> <is/are> ya está cerrado.
- alreadyDisarmed : <device(s)> <is/are> ya está desactivada.
- alreadyDocked : <device(s)> <is/are> ya está conectado.
- alreadyInState : <device(s)> <is/are> que ya tienen ese estado.
- alreadyLocked : <device(s)> <is/are> ya está bloqueado.
- alreadyOff : <device(s)> <is/are> ya está desactivada.
- alreadyOn : <device(s)> <is/are> ya está activada.
- alreadyOpen : <device(s)> <is/are> ya están abiertas.
- alreadyPaused : <device(s)> <is/are> ya está en pausa.
- alreadyStarted : <device(s)> <is/are> que ya comenzó.
- alreadyStopped : <device(s)> <is/are> ya se detuvo.
- alreadyUnlocked : <device(s)> <is/are> ya está desbloqueado.
- ambiguousZoneName : Lo sentimos. <device(s)> no puede identificar a qué zona te refieres. Asegúrate de que las zonas tengan nombres únicos y vuelve a intentarlo.
- amountAboveLimit : Eso es más de lo que <device(s)> puede admitir.
- appLaunchFailed : No se pudo ejecutar <nombre de la app> en <device(s)>.
- armFailure : <device(s)> no se pudo activar el sistema.
- armLevelNeeded : No sé bien qué nivel establecer en <device(s)>. a los que tiene acceso una cuenta. Di, por ejemplo, "Configurar <dispositivo(s)> a <seguridad baja>" o "Configura <los dispositivos> a <seguridad alta>"
- authFailure : No puedo establecer conexión con <device(s)>. Revisa la app para asegurarte de que tu <dispositivo/dispositivos> <is/are> completamente configurada.
- bagFull : <device(s)> <has/have> <una bolsa llena/bolsas completas>. Vacía la opción <it/that>. y vuelve a intentarlo.
- belowMinimumLightEffectsDuration : El valor es inferior a la duración mínima de 5 minutos. Vuelve a intentarlo.
- belowMinimumTimerDuration : No puedo establecer <device(s)> por tan poco tiempo. Vuelve a intentarlo.
- binFull : <device(s)> <has/have> <un contenedor completo>.
- cancelArmingRestricted : Lo siento, no pude cancelar la activación de <device(s)>.
- cancelTooLate : Lamentablemente, ya es demasiado tarde para cancelar. Usar <device(s)> o la app.
- channelSwitchFailed : No se pudo cambiar al canal <channel name>. Vuelve a intentarlo más tarde.
- chargerIssue : Lo sentimos, parece que parece <device(s)>. <has/have> <un problema con el cargador o con el cargador>.
- commandInsertFailed : No se pudieron procesar los comandos para <device(s)>.
- deadBattery : <dispositivo(s)> <has/have> <baterías agotadas/baterías agotadas>.
- degreesOutOfRange : Los grados solicitados están fuera del rango de <device(s)>.
- deviceAlertNeedsAssistance : <device(s)> <has/have> una alerta activa y <necesitan(s)> tu asistencia.
- deviceAtExtremeTemperature : <dispositivo(s)> <is/are> a <una temperatura extrema o una temperatura extrema>.
- deviceBusy : Lo sentimos, parece que parece <device(s)>. ya está haciendo algo en este momento.
- deviceCharging : Lo sentimos, parece que parece <device(s)>. no puedes hacer eso porque se está cargando (ha_shared.ItsWhenre size=$item.devices.total_device_count).
- deviceClogged : Lo sentimos, parece que parece <device(s)>. esté obstruida.
- deviceCurrentlyDispensing : <device(s)> ya está expendiendo algo en este momento.
- deviceDoorOpen : La puerta está abierta en <device(s)>. Ciérrala y vuelve a intentarlo.
- deviceHandleClosed : La manija está cerrada en <device(s)>. Ábrela y vuelve a intentarlo.
- deviceJammingDetected : <device(s)> <is/are> atascado.
- deviceLidOpen : La tapa está abierta en <device(s)>. Ciérrala y vuelve a intentarlo.
- deviceNeedsRepair : <device(s)> <need(s)> para reparar. Comunícate con el proveedor de servicios local.
- deviceNotDocked : Lo sentimos, parece que parece <device(s)>. <no es/no es> cuando esté en la estación de carga. Conecta <it/when> y vuelve a intentarlo.
- deviceNotFound : <device(s)> <está/están> no disponibles. Te recomendamos configurar <it/then> .
- deviceNotMounted : Lo sentimos, parece que parece <device(s)>. no puede hacer eso porque <it/there> <está/está> no montado.
- deviceNotReady : <device(s)> <está/está>no está listo.
- deviceStuck : <device(s)> <is/are> y necesita tu ayuda.
- deviceTampered : <dispositivo(s)> <has/have> que hayan manipulado.
- deviceThermalShutdown : Lo sentimos, parece que parece <device(s)>. apagar el dispositivo debido a temperaturas extremas.
- directResponseOnlyUnreachable : <device(s)> <no debe/no> admite el control remoto.
- disarmFailure : <device(s)> no se pudo desactivar.
- discreteOnlyOpenClose : Lo sentimos. <device(s)> solo se pueden abrir o cerrar por completo.
- dispenseAmountAboveLimit : <device(s)> no podemos expender tanta cantidad.
- dispenseAmountBelowLimit : <device(s)> no podemos expender tan pequeña cantidad.
- dispenseAmountRemainingExceeded : <device(s)> no tiene suficiente <elemento dispensado> para hacerlo.
- dispenseFractionalAmountNotSupported : <device(s)> no se pueden expender fracciones de <dispense item>.
- dispenseFractionalUnitNotSupported : <device(s)> no admite fracciones de esa unidad para <dispense item>.
- dispenseUnitNotSupported : <device(s)> no es compatible con esa unidad para <dispense item>.
- doorClosedTooLong : Hace tiempo que no se abre la puerta de <device(s)> se abrió. Abre la puerta, asegúrate de que haya algo adentro y vuelve a intentarlo.
- emergencyHeatOn : <device(s)> <is/are> en el modo calefactor de emergencia, por lo que <it/género> deberán ajustarse manualmente.
- faultyBattery : <dispositivo(s)> <has/have> <una batería o baterías defectuosas>.
- floorUnreachable : <device(s)> no llegas a esa habitación. Muévelo a <it/ellos> al piso correcto y vuelve a intentarlo.
- functionNotSupported : De hecho, <device(s)> <no debe/no> admiten esa funcionalidad.
- genericDispenseNotSupported : Necesito saber qué le gustaría expender. Vuelve a intentarlo con el nombre del artículo.
- hardError : Lo siento, se produjo un error y no puedo controlar el dispositivo de la casa.
- hardError : Lo siento, se produjo un error y no puedo controlar el dispositivo de la casa.
- inAutoMode : <device(s)> <is/are> actualmente establecido en modo automático. Para cambiar la temperatura, deberás <it/then> a otro modo.
- inAwayMode : <device(s)> <is/are> establecido actualmente en el modo Ausente. Para controlar el termostato, deberás cambiarlo manualmente al modo En casa con la app de Nest en un teléfono, una tablet o una computadora.
- inDryMode : <device(s)> <is/are> configurado actualmente en modo seco. Para cambiar la temperatura, deberás <it/then> a otro modo.
- inEcoMode : <device(s)> <is/are> está configurada en el modo Eco. Para cambiar la temperatura, deberás <it/then> a otro modo.
- inFanOnlyMode : <device(s)> <is/are> establecido en el modo solo ventilador. Para cambiar la temperatura, deberás <it/then> a otro modo.
- inHeatOrCool : <device(s)> no está en modo frío/calor.
- inHumidifierMode : <device(s)> <is/are> actualmente establecido en el modo humidificador. Para cambiar la temperatura, deberás <it/then> a otro modo.
- inOffMode : <device(s)> <is/are> actualmente desactivado. Para cambiar la temperatura, deberás <it/then> a un modo diferente.
- inPurifierMode : <device(s)> <is/are> configurado actualmente en modo purificador. Para cambiar la temperatura, deberás <it/then> a otro modo.
- inSleepMode : <device(s)> <is/are> en modo de suspensión. Vuelve a intentarlo más tarde.
- inSoftwareUpdate : <dispositivo(s)> <is/are> hay una actualización de software en este momento.
- lockFailure : <device(s)> no se pudo bloquear.
- lockedState : <device(s)> <is/are> está bloqueada actualmente.
- lockedToRange : Esa temperatura está fuera del rango bloqueado en <device(s)>.
- lowBattery : <dispositivo(s)> <has/have> batería baja.
- maxSettingReached : <device(s)> <is/are> con el valor más alto.
- maxSpeedReached : <device(s)> <is/are> ya está establecida en la velocidad máxima.
- minSettingReached : <device(s)> <is/are> en el valor más bajo.
- minSpeedReached : <device(s)> <is/are> ya está establecida en la velocidad mínima.
- monitoringServiceConnectionLost : <device(s)> <has/have> perdió <su/su> una conexión al servicio de supervisión.
- needsAttachment : Lo sentimos, parece que parece <device(s)>. <is/are> falta un archivo adjunto necesario. Reemplázala y vuelve a intentarlo.
- needsBin : Lo sentimos, parece que parece <device(s)>. <is/are> falta un contenedor. Reemplázala y vuelve a intentarlo.
- needsPads : <device(s)> <need(s)> almohadillas nuevas.
- needsSoftwareUpdate : <dispositivo(s)> <need(s)> una actualización de software.
- needsWater : <device(s)> <need(s)> agua.
- networkProfileNotRecognized : Lo siento, no reconozco "<perfil de red>" en <device(s)>.
- networkSpeedTestInProgress : Ya estoy probando la <network> <velocidades/velocidades>>.
- noAvailableApp : Lo sentimos, parece que parece <nombre de la app> no está disponible.
- noAvailableChannel : Lo sentimos, parece que parece el canal <channel name>. no está disponible.
- noChannelSubscription : Lo sentimos, no estás suscrito al canal <channel name>. en este momento.
- noTimerExists : Al parecer, no se estableció ningún temporizador en <device(s)>.
- notSupported : Este modo no está disponible para <device(s)>.
- obstructionDetected : <device(s)> detectaste una obstrucción.
- sin conexión , dispositivoSin conexión : Lo sentimos, parece que parece <device(s)>. <está/es> no está disponible en este momento.
- onRequiresMode : Especifica el modo que quieres activar.
- passphraseIncorrect : Parece que el PIN es incorrecto.
- percentOutOfRange : Lo siento, pero no puedo establecer <device(s)> a <percent>.
- pinIncorrect : (passphraseIncorrect)
- rainDetected : No abrí <device(s)> porque se detectó lluvia.
- rangeTooClose : Estos están demasiado cerca para establecer un intervalo Calor • Frío en <device(s)>. Elige temperaturas más distantes entre sí.
- relinkRequired : Parece que se produjo un error con tu cuenta. Usa la app de Google Home o la de Asistente para volver a vincular <device(s)>.
-
remoteSetDisabled
:
- Parámetro opcional
errorCodeReason
currentlyArmed
- Lo sentimos, como la seguridad ya está activada, debes usar <device(s)>. o la app para realizar cambios.remoteUnlockNotAllowed
- Lo siento, no puedo desbloquear <device(s)>. de forma remota.remoteControlOff
: Esa acción está inhabilitada actualmente. Habilita el control remoto en <device(s)> y vuelve a intentarlo.childSafetyModeActive
- Esa acción está inhabilitada para <device(s)>. mientras el modo de seguridad infantil está activo.
- Parámetro opcional
- roomsOnDifferentFloors : <device(s)> no puede acceder a esas habitaciones porque están en pisos diferentes.
- safetyShutOff : <device(s)> <is/are> en el modo de apagado seguro, por lo que <it/género> deberán ajustarse manualmente.
- sceneCannotBeApplied : Lo sentimos. <device(s)> no se pueden aplicar.
- securityRestriction : <device(s)> <has/have> una restricción de seguridad.
- softwareUpdateNotAvailable : No hay una actualización de software disponible en <device(s)>.
- startRequiresTime : Para realizar esa acción, tendrás que decirme cuánto tiempo quieres que <device(s)> esté activado.
- stillCoolingDown : <device(s)> <is/are> aún se está enfriando.
- stillWarmingUp : <device(s)> <is/are> aún se está calentando.
- streamUnavailable : Parece que la transmisión de <device(s)> no está disponible en este momento.
- streamUnplayable : Lo siento, no puedo reproducir la transmisión desde <device(s)> en este momento.
- tankEmpty : <device(s)> <has/have> <un tanque vacío/tanque vacío>. Completa <it/then> y vuelve a intentarlo.
- targetAlreadyReached : Lo siento, parece que esa ya es la temperatura actual.
- timerValueOutOfRange : <device(s)> no se puede establecer para ese período.
- tooManyFailedAttempts : Lamentablemente, se realizaron demasiados intentos fallidos. Para completar la acción, ve a la app de tu dispositivo.
- transientError : Se produjo un error al controlar <device(s)>. Vuelve a intentarlo.
- turnedOff , deviceTurnedOff : <device(s)> <is/are> ahora mismo.
- unableToLocateDevice : No pude ubicar <device(s)>.
- unknownFoodPreset : <device(s)> no es compatible con ese ajuste predeterminado.
- unlockFailure : <device(s)> no se pudo desbloquear.
- unpausableState : <device(s)> no se puede detener en este momento.
- userCancelled : aceptable
- valueOutOfRange : <device(s)> se puede establecer en esa temperatura.
Excepciones
Deberías devolver una excepción cuando haya un problema o una alerta asociados a un kubectl. El comando podría completarse con éxito o fallar.
Si el comando tuvo éxito (estado = "SUCCESS"), informa las excepciones
usando la característica StatusReport
(para dispositivos que no sean el objetivo)
o devuelve un exceptionCode
adecuado (para el dispositivo de destino).
Por ejemplo, si la pantalla de pelusa de la secadora está llena, el usuario puede iniciar su pero deberías advertirle sobre este estado. De forma similar, cuando un dispositivo tiene una batería baja que no está vacía, puedes ejecutar un comando pero deberías informarles que el dispositivo tiene poca batería.
Si el comando falla debido a excepciones, el estado debería ser "EXCEPTIONS",
y las excepciones se deben informar mediante el trait StatusReport
.
Excepción sin bloqueo (ÉXITO) sobre el dispositivo de destino
Este ejemplo se usa para trabar la puerta:
La cerradura de la puerta principal tiene poca batería. Trabando la puerta principal
{ "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" } }] } }
Excepción sin bloqueo (ÉXITO) sobre otro dispositivo que usa StatusReport
Este ejemplo se usa para activar un sistema de seguridad: Se activará el sistema de seguridad. La ventana frontal está abierta.
{ "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" }] } }] } }
Excepción de bloqueo sobre otro dispositivo con 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 excepciones
Las siguientes excepciones generarán el TTS asociado en el dispositivo.
- bagFull : <device(s)> <has/have> <una bolsa llena/bolsas completas>. Vacía la opción <it/that>. y vuelve a intentarlo.
- binFull : <device(s)> <has/have> <un contenedor completo>.
- carbonMonoxideDetected : Se detectó monóxido de carbono en <nombre de la casa>.
- deviceAtExtremeTemperature : <dispositivo(s)> <is/are> a <una temperatura extrema o una temperatura extrema>.
- deviceJammingDetected : <device(s)> <is/are> atascado.
- deviceMoved : <device(s)> <was/were> que se movieron.
- deviceOpen : <dispositivo(s)> <is/are> abiertos.
- deviceTampered : <dispositivo(s)> <has/have> que hayan manipulado.
- deviceUnplugged : <dispositivo(s)> <is/are> desconectado.
- floorUnreachable : <device(s)> no llegas a esa habitación. Muévelo a <it/ellos> al piso correcto y vuelve a intentarlo.
- hardwareFailure : <dispositivo(s)> <has/have> un problema de hardware.
- inSoftwareUpdate : <dispositivo(s)> <is/are> hay una actualización de software en este momento.
- isBypassed : <device(s)> <is/are> se evita actualmente.
- lowBattery : <dispositivo(s)> <has/have> batería baja.
- motionDetected : <dispositivo(s)> <detect(s)> movimiento.
- needsPads : <device(s)> <need(s)> almohadillas nuevas.
- needsSoftwareUpdate : <dispositivo(s)> <need(s)> una actualización de software.
- needsWater : <device(s)> <need(s)> agua.
- networkJammingDetected : la conexión de red doméstica a <device(s)> no funciona correctamente.
- noIssuesReported : <device(s)> informaron que no hay problemas.
- roomsOnDifferentFloors : <device(s)> no puede acceder a esas habitaciones porque están en pisos diferentes.
- runCycleFinished : <device(s)> <has/have> terminó de ejecutarse.
- securityRestriction : <device(s)> <has/have> una restricción de seguridad.
- smokeDetected : Se detectó humo en <nombre de la casa>.
- tankEmpty : <device(s)> <has/have> <un tanque vacío/tanque vacío>. Completa <it/then> y vuelve a intentarlo.
- usingCellularBackup : <dispositivo(s)> <is/are> usando el respaldo celular.
- waterLeakDetected : <dispositivo(s)> <detect(s)> de una fuga de agua.