Ce document répertorie les erreurs et les exceptions officiellement compatibles avec les appareils pour la maison connectée. Veuillez utiliser les codes d'erreurs et d'exceptions indiqués dans la réponse d'intent ou dans les notifications si vous l'avez implémentée afin que l'Assistant Google alerte les utilisateurs finaux en cas de problèmes liés à une commande ou à un état d'appareil donné. Si la réponse contient une mise en forme incorrecte ou errorCode
, l'Assistant Google affiche un message d'erreur générique (par exemple, "Désolé, l'appareil n'est pas disponible pour le moment".
Erreurs
Vous devez renvoyer un code d'erreur lorsqu'un problème entraîne l'échec d'une requête d'exécution ou de requête. Par exemple, si un verrou de porte est coincé et ne peut pas être verrouillé ni déverrouillé, une erreur concernant cet état doit être renvoyée à l'utilisateur.
Les codes d'erreur peuvent être ajoutés au niveau de l'appareil ou au niveau global. Par exemple, si un utilisateur possède plusieurs ampoules provenant d'un seul fournisseur et qu'elles sont contrôlées par un hub, l'utilisateur peut renvoyer une erreur au niveau de l'appareil si l'un d'eux est hors connexion ou une erreur d'ordre général si l'intégralité de son hub est hors connexion et qu'aucun éclairage ne peut être contrôlé. Si tous les appareils sont hors connexion, il n'y a aucune différence entre l'utilisation d'erreurs à l'échelle globale ou au niveau de l'appareil. Lorsqu'un appareil est hors connexion, vous devez signaler l'état {"online": false}
dans reportState, même si vous renvoyez le code d'erreur deviceOffline
.
En résumé :
- Erreur globale: tous les appareils inclus dans la réponse ont la même erreur
- Erreur au niveau local: réponse mélangée avec erreurs et réussites
Erreurs au niveau global
L'extrait de code JSON suivant montre comment renvoyer des erreurs au niveau global dans la réponse QUERY ou EXECUTE.
Exemple d'erreur globale deviceOffline
en raison du hub hors connexion:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "errorCode": "deviceOffline", "status" : "ERROR" } }
Un exemple d'erreur globale inSoftwareUpdate
en raison du hub est en cours de mise à jour:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "errorCode": "inSoftwareUpdate", "status" : "ERROR" } }
Erreurs au niveau de l'appareil
Réponse QUERY
L'extrait de code JSON suivant montre comment renvoyer des erreurs au niveau de l'appareil dans la réponse QUERY.
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "devices": { "device-id-1": { "errorCode": "deviceOffline", "status" : "ERROR" }, "device-id-2": { "errorCode": "deviceOffline", "status" : "ERROR" } } } }
Réponse EXECUTE
L'extrait de code JSON suivant montre comment renvoyer des erreurs au niveau de l'appareil dans la réponse 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 } } ] } }
Notifications avec erreurs
Notification proactive
L'extrait de code JSON suivant montre comment signaler les erreurs au niveau de l'appareil dans une notification proactive.
{ "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" } } } } } }
Réponse de suivi
L'extrait de code JSON suivant montre comment signaler les erreurs au niveau de l'appareil dans une réponse de suivi.
{ "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" } } } } } } }
Liste d'erreurs
Les erreurs suivantes entraînent la synthèse vocale associée sur l'appareil.
- aboveMaximumLightEffectsDuration : Vous avez dépassé la durée maximale d'une heure. Veuillez réessayer.
- aboveMaximumMinuteDuration : Je ne peux définir <device(s)> que pour une durée maximale de <time period>
- actionNotAvailable : Désolé, je ne peux pas faire ça pour le moment.
- actionUnavailableWhileRunning : <appareil(s)> <est/sont> en cours d'exécution, je ne peux donc rien modifier.
- alreadyArmed : <device(s)> <is/are> already armed.
- alreadyAtMax : <appareil(s)> <is/are> est déjà défini sur la température maximale.
- alreadyAtMin : <device(s)> <is/are> already set to the minimum minimum.
- alreadyClosed : <device(s)> <is/are> already closed.
- déjà désactivé(e) : <appareil(s)> <est/sont> déjà désactivés.
- DéjàDocks : <appareil(s)> <is/are> est déjà sur la station d'accueil.
- alreadyInState : <appareil(s)> <is/are> est déjà dans cet état.
- verrouillé : <appareil(s)> <est/sont> déjà verrouillés.
- offOff : <appareil(s)> <is/are> est déjà désactivé.
- alreadyOn : <device(s)> <is/are> already on.
- OpenOpen : <device(s)> <is/are> already open.
- déjà suspendu : <appareil(s)> <est/sont> déjà suspendus.
- alreadyStarté : <appareil(s)> <is/are> est déjà démarré(e).
- déjà arrêté : <appareil(s)> <est/sont> déjà arrêtés.
- DéjàUnlock : <appareil(s)> <est/sont> déjà déverrouillé(e)s.
- ambiguousZoneName : Désolé, <device(s)> ne parvient pas à identifier la zone dont vous parlez. Veuillez vous assurer que vos zones comportent des noms uniques, puis réessayez.
- amountAboveLimit : C'est plus que ce que <device(s)> peut accepter.
- appLaunchFailed : Désolé, le lancement de <app name> a échoué sur <device(s)>.
- armFailure : <device(s)> could not be armed.
- armLevelNeeded : Je ne sais pas à quel niveau d'alarme définir <device(s)>. Essayez de dire "Mets <appareil(s)> sur <niveau de sécurité>" ou "Mets <appareil(s)> sur <sécurité élevée>"
- authFailure : Je ne parviens pas à accéder à <device(s)>. Essayez de vérifier dans l'application que votre <device/devices> <est/sont> entièrement configuré.
- bagFull : <device(s)> <has/have> <a full bag/fullbags. Veuillez vider <it/them> et réessayer.
- underMinimumLightEffectsDuration : Inférieur à la durée minimale de 5 minutes. Veuillez réessayer.
- underMinimumMinuteDuration : Je ne peux pas définir <device(s)> pour une durée aussi courte. Veuillez réessayer.
- binFull : <device(s)> <has/have> <a full bin/full bins>.
- cancelArmingRestricted : Désolé, je n'ai pas pu annuler l'activation de <device(s)>.
- cancelTooLate : Désolé, il est trop tard pour annuler. Utilisez plutôt <device(s)> ou l'appli.
- channelSwitchFailed : Désolé, le passage à <nom de la chaîne> a échoué. Veuillez réessayer plus tard.
- loaderIssue : Désolé, il semble que <device(s)> <has/have> <a chargeur issue/charger issues>.
- commandInsertFailed : Impossible de traiter les commandes pour <device(s)>.
- deBatterieBattery : <appareil(s)> <has/have> <a deDe Battery/dead Batterys>.
- degrésOutOfRange : Les degrés demandés sont en dehors de la plage pour <device(s)>.
- deviceAlertNeedsAssistance : <device(s)> <has/have> an alert alert and <need(s)> your assistance.
- deviceAtExtremeTemperature : <device(s)> <is/are> à <une température extrême/températures extrêmes>.
- deviceBusy : Désolé, il semble que <device(s)> effectue déjà une action en ce moment.
- deviceCharging : Désolé, il semble que <device(s)> ne peut pas faire cela, car (ha_shared.ItsWithre size=$item.devices.total_device_count) en charge.
- deviceClogged : Désolé, il semble que <device(s)> soit bloqué.
- deviceactuellementDispensing : <device(s)> est déjà en train de distribuer un produit.
- deviceDoorOpen : La porte est ouverte sur <device(s)>. Veuillez la fermer et réessayer.
- deviceHandleClosed : L'identifiant est fermé sur <device(s)>. Veuillez l'ouvrir et réessayer.
- deviceJammingDetected : <device(s)> <is/are> jammed.
- deviceLidOpen : Le couvercle est ouvert sur <device(s)>. Veuillez le fermer et réessayer.
- deviceNeedsRepair : <device(s)> <need(s)> to be réparation. Veuillez contacter votre concessionnaire réparateur local.
- deviceNotDocked : Désolé, il semble que <device(s)> <isn't/aren't> docksing. Veuillez le placer sur la station d'accueil, puis réessayer.
- deviceNotFound : <device(s)> <is/are>n't available. Je vous suggère de la configurer à nouveau.
- deviceNotMounted : Désolé, <device(s)> ne peut pas faire cela, car <it/yes> <is/are>n'est pas installé.
- deviceNotReady : <device(s)> <is/are>n't ready.
- deviceStuck : <device(s)> <is/are> blocked and need your help.
- deviceTampered : <device(s)> <has/have> changed.
- deviceThermalShutdown : Désolé, il semble que <device(s)> ne s'arrête pas en raison de températures extrêmes.
- directResponseOnlyUnreachable : <device(s)> <does't/don'>> support Remote télécommande.
- désarmFailure : <appareil(s)> n'a pas pu être désactivé.
- discrèteeOnlyOpenClose : Désolé, <device(s)> ne peut être ouvert ou fermé que complètement.
- distributeureAmountAboveLimit : <device(s)> can't distributeur all a big amount.
- distributeureAmountUnderLimit : <device(s)> can't distributeur all a small amount.
- distribueeAmountREMAININGExceeded : <device(s)> has not has more <dispense item> for this.
- distributeureFractionalAmountNotSupported : <device(s)> can't distributeur all fractions of <dispense item>.
- distribueeFractionalUnitNotSupported : <device(s)> n'accepte pas les fractions de cette unité pour <dispensed item>.
- dispenseUnitNotSupported : <device(s)> is not support that unit for <dispense item>.
- doorClosedTooLong : La porte d'<device(s)> n'a pas été ouverte depuis un certain temps. Veuillez l'ouvrir et vérifier s'il y a bien quelque chose dans le micro-ondes, puis réessayer.
- Urgence Activé : <appareil(s)> <est/sont> en mode Chauffage d'urgence. <it/Il> devra donc être réglé manuellement.
- faultyBattery : <device(s)> <has/have> <a Faulted Battery/Ffecty Batterys>.
- floorUnaccessible : <device(s)> can't reach this room. Veuillez le déplacer vers le bon étage et réessayer.
- functionNotSupported : En fait, <device(s)> <not/nott> support that feature.
- genericDispenseNotsupported : J'ai besoin de savoir ce que vous souhaitez distribuer. Veuillez réessayer avec le nom de l'élément.
- hardError : Désolé, un problème est survenu et je ne peux pas contrôler votre appareil domestique.
- hardError : Désolé, un problème est survenu et je ne peux pas contrôler votre appareil domestique.
- inAutoMode : <device(s)> <is/are> current set to mode auto. Pour modifier la température, vous devez changer de <it/lui> mode.
- inAbsentMode : <device(s)> <is/are> est actuellement en mode Absent. Pour contrôler votre thermostat, vous devez le passer manuellement en mode Chez moi depuis l'application Nest sur votre téléphone, tablette ou ordinateur.
- inDryMode : <device(s)> <is/are> est actuellement défini en mode sec. Pour modifier la température, vous devez changer de <it/lui> mode.
- inEcoMode : <device(s)> <is/are>actuellement défini sur le mode Éco. Pour modifier la température, vous devez changer de <it/lui> mode.
- inFanOnlyMode : <device(s)> <is/are> actuellement défini sur le mode ventilateur uniquement. Pour modifier la température, vous devez changer de <it/lui> mode.
- inHeatOrCool : <appareil(s)> <is/are>n'est pas en mode chauffage/refroidissement
- inHumidifierMode : <device(s)> <is/are> est actuellement défini sur le mode humidificateur. Pour modifier la température, vous devez changer de <it/lui> mode.
- inOffMode : <appareil(s)> <is/are> actuellement désactivé. Pour modifier la température, vous devez changer de mode.<
- inPurifierMode : <device(s)> <is/are> est actuellement défini sur le mode purificateur. Pour modifier la température, vous devez changer de <it/lui> mode.
- inSleepMode : <device(s)> <is/are> in sleep mode. Veuillez réessayer plus tard.
- inSoftwareUpdate : <device(s)> <is/are> est en cours de mise à jour logicielle.
- verrouFailure : <appareil(s)> n'a pas pu être verrouillé.
- lockState : <appareil(s)> <is/are> actuellement verrouillés.
- lockToRange : Cette température est en dehors de la plage définie sur <device(s)>.
- LowBattery : <appareil(s)> <has/have> batterie faible.
- maxSettingReached : <appareil(s)> <is/are> est déjà défini sur la valeur la plus élevée.
- maxSpeedReached : <device(s)> <is/are> already set to the maximum speed.
- minSettingReached : <appareil(s)> <is/are> est déjà défini sur la valeur la plus basse.
- minSpeedReached : <appareil(s)> <is/are> est déjà défini sur la vitesse minimale.
- surveillanceServiceConnectionPerdu : <device(s)> <has/have> connected <its/their> connection to the monitoring service.
- needAttachment : Désolé, il semble qu'une pièce jointe requise soit <device(s)> <is/are>. Veuillez le remplacer et réessayer.
- NeedBin : Désolé, il semble qu'un <device(s)> <is/are> n'ait pas de bac. Veuillez le remplacer et réessayer.
- needPads : <device(s)> <need(s)> new pads.
- needSoftwareUpdate : <device(s)> <need(s)> a Software update.
- NeedWater : <device(s)> <need(s)> water.
- networkProfileNotRecognitiond : Désolé, je ne reconnais pas "<network profile>" sur <device(s)>.
- networkSpeedTestInProgress : Je teste déjà <network> <speed/speeds>>.
- noAvailableApp : Désolé, il semble que <app name> n'est pas disponible.
- noAvailableChannel : Désolé, il semble que la chaîne <channel name> ne soit pas disponible.
- noChannelSubscription : Désolé, vous n'êtes pas abonné à la chaîne <channel name> pour le moment.
- noMinuteExists : Désolé, aucun minuteur n'est défini sur <device(s)>.
- notsupported : Désolé, ce mode n'est pas disponible pour <device(s)>.
- blocageionDetected : <device(s)> a détecté une obstruction.
- hors connexion , deviceOffline : Désolé, il semble que <device(s)> <is/are>n'est pas disponible pour le moment.
- onRequiresMode : Veuillez spécifier le mode que vous souhaitez activer.
- phrasephrase incorrecte : Désolé, il semble que ce code est incorrect.
- percentOutOfRange : Désolé, je ne peux pas définir <device(s)> sur <percent>.
- pinIncorrect : (passphraseIncorrect)
- rainDetected : Je n'ai pas ouvert <device(s)>, car de la pluie a été détectée.
- rangeTooClose : La température indiquée est trop proche d'une plage de chauffage/refroidissement pour <device(s)>. Choisissez des températures plus éloignées.
- relinkRequired : Désolé, il semble qu'une erreur se soit produite dans votre compte. Veuillez utiliser l'application Google Home ou Assistant pour réassocier <appareil(s)>.
-
distantSetDisabled
:
- Paramètre facultatif
errorCodeReason
currentlyArmed
- Malheureusement, la sécurité étant déjà activée, vous devez utiliser <device(s)> ou l'appli pour apporter des modifications.remoteUnlockNotAllowed
- Malheureusement, je ne peux pas déverrouiller <device(s)> à distance.remoteControlOff
- Cette action est actuellement désactivée. Veuillez activer la télécommande sur <appareil(s)>, puis réessayer.childSafetyModeActive
- Cette action est désactivée pour <device(s)> lorsque le mode de sécurité enfant est actif.
- Paramètre facultatif
- RoomOnDifferentFloors : <device(s)> ne peut pas atteindre ces pièces, car elles sont situées à différents étages.
- offShutOff : <appareil(s)> <est/sont> en mode Arrêt d'urgence. Vous devrez donc les ajuster manuellement.
- SceneCannotBeApplied : Désolé, <device(s)> ne peut pas être appliqué.
- securityRestriction : <device(s)> <has/have> a restriction restriction.
- SoftwareUpdateNotAvailable : Désolé, aucune mise à jour logicielle n'est disponible sur <device(s)>.
- startRequiresTime : Pour faire cela, vous devez me dire combien de temps vous voulez faire marcher <device(s)>.
- sameCoolingDown : <appareil(s)> <est/sont toujours en cours de refroidissement.
- tillWarmingUp : <appareil(s)> <is/are> toujours en cours de préparation.
- streamUnavailable : Désolé, il semble que le flux n'est pas disponible actuellement sur <device(s)>.
- streamUnplayable : Désolé, je ne peux pas lire le flux depuis <device(s)> pour le moment.
- emptyEmpty : <device(s)> <has/have> <an empty glass/empty tanks>. Veuillez les remplir et les réessayer,
- targetDéjàReached : Désolé, c'est déjà la température actuelle.
- minuteurValueOutOfRange : <device(s)> ne peut pas être défini pour cette durée.
- trop ManyFailedTentatives : Désolé, un trop grand nombre de tentatives ont échoué. Veuillez accéder à l'application de votre appareil pour effectuer cette action.
- transientError : Désolé, un problème est survenu lors du contrôle de <device(s)>. Veuillez réessayer.
- turned Off, deviceTurnedOff : <device(s)> <is/are> est actuellement éteint.
- ImpossibleToFindDevice : Je n'ai pas pu localiser <device(s)>.
- unknownFoodPreset : <device(s)> n'est pas compatible avec ce préréglage.
- UnlockFailure : Impossible de déverrouiller <device(s)>.
- unpausableState : <device(s)> ne peut pas être mis en pause pour le moment.
- userCancelled : ok
- valueOutOfRange : <device(s)> ne peut pas être réglé sur cette température.
Exceptions
Vous devez renvoyer une exception en cas de problème ou d'alerte associé à une commande. La commande peut réussir ou échouer.
Si la commande a réussi (état = "SUCCESS"), signalez les exceptions à l'aide de la caractéristique StatusReport
(pour les appareils autres que la cible) ou en renvoyant une exceptionCode
appropriée (pour l'appareil cible).
Par exemple, si l'écran de lint du sèche-linge est plein, l'utilisateur peut toujours démarrer son sèche-linge, mais vous pouvez le prévenir de cet état. De même, lorsqu'un appareil dispose d'une batterie faible qui n'est pas vide, vous pouvez toujours exécuter une commande.
Si la commande échoue en raison d'exceptions, l'état doit être "EXCEPTIONS", et les exceptions doivent être signalées à l'aide de la caractéristique StatusReport
.
Exception non bloquante (SUCCESS) concernant l'appareil cible
Cet exemple permet de verrouiller la porte:
Les piles de la porte d'entrée sont faibles. Je verrouille la porte d'entrée.
{ "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" } }] } }
Exception non bloquante (SUCCESS) concernant un autre appareil à l'aide de StatusReport
Cet exemple permet d'activer un système de sécurité: OK, activation du système de sécurité. La fenêtre principale est ouverte.
{ "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" }] } }] } }
Blocage des exceptions sur un autre appareil à l'aide de 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" } ] } } } }
Liste d'exceptions
Les exceptions suivantes entraînent la synthèse vocale associée sur l'appareil.
- bagFull : <device(s)> <has/have> <a full bag/fullbags. Veuillez vider <it/them> et réessayer.
- binFull : <device(s)> <has/have> <a full bin/full bins>.
- carbonMonoxideDetected : Un monoxyde de carbone a été détecté dans <nom de la maison>.
- deviceAtExtremeTemperature : <device(s)> <is/are> à <une température extrême/températures extrêmes>.
- deviceJammingDetected : <device(s)> <is/are> jammed.
- deviceDéplacement : <device(s)> <was/were>move.
- deviceOpen : <device(s)> <is/are> open.
- deviceTampered : <device(s)> <has/have> changed.
- deviceUnplugged : <device(s)> <is/are> unplugged.
- floorUnaccessible : <device(s)> can't reach this room. Veuillez le déplacer vers le bon étage et réessayer.
- matérielFailure : <device(s)> <has/have> a hardware issue.
- inSoftwareUpdate : <device(s)> <is/are> est en cours de mise à jour logicielle.
- passé : <appareil(s)> <is/are> actuellement contourné.
- LowBattery : <appareil(s)> <has/have> batterie faible.
- MotionDetected : moyen de <device(s)> <detect(s)>.
- needPads : <device(s)> <need(s)> new pads.
- needSoftwareUpdate : <device(s)> <need(s)> a Software update.
- NeedWater : <device(s)> <need(s)> water.
- networkJammingDetected : la connexion du réseau domestique à <device(s)> ne fonctionne pas correctement.
- noIssuesReported : <device(s)> n'a signalé aucun problème.
- RoomOnDifferentFloors : <device(s)> ne peut pas atteindre ces pièces, car elles sont situées à différents étages.
- runCycleFinished : <appareil(s)> <has/have> terminés.
- securityRestriction : <device(s)> <has/have> a restriction restriction.
- fuméeDetected : De la fumée a été détectée dans <nom de la maison>.
- emptyEmpty : <device(s)> <has/have> <an empty glass/empty tanks>. Veuillez les remplir et les réessayer,
- usingCellularBackup : <device(s)> <is/are> utilisant la connexion cellulaire.
- waterLeakDetected : <appareil(s)> <detect(s)> une fuite d'eau.