Bienvenue dans le Centre des développeurs Google Home, la nouvelle destination pour apprendre à développer des actions pour la maison connectée. Remarque : Vous continuerez à créer des actions dans la console Actions.

Erreurs et exceptions

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Ce document répertorie les erreurs et les exceptions officiellement acceptées pour les appareils pour la maison connectée. Veuillez utiliser ces codes d'erreurs et d'exceptions 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 pour les problèmes liés à une commande ou un état d'appareil donnés. Si la réponse contient une mise en forme incorrecte ou errorCode, l'Assistant Google affiche un message d'erreur générique tel que "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 d'une requête. Par exemple, si un verrou de porte est bloqué 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 dispose de nombreuses lumières provenant d'un seul fournisseur et contrôlées par un hub, lorsque l'utilisateur demande l'extinction de toutes les lumières, le fournisseur peut renvoyer une erreur au niveau de l'appareil si une seule lumière est hors connexion, ou une erreur globale si l'ensemble du hub est hors connexion et qu'aucune lumière ne peut être contrôlée. Si tous les appareils sont hors connexion, il n'y a aucune différence entre les erreurs à l'échelle mondiale et celles 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: la réponse est identique pour tous les appareils de la réponse.
  • Erreur au niveau local: réponse mixte avec erreurs et réussites

Erreurs à l'échelle mondiale

L'extrait de code JSON suivant montre comment renvoyer des erreurs à l'échelle mondiale dans une réponse QUERY ou EXECUTE.

Un exemple d'erreur globale deviceOffline en raison du hub est hors connexion:

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "errorCode": "deviceOffline",
    "status" : "ERROR"
  }
}

Voici un exemple d'erreur globale inSoftwareUpdate due à la mise à jour du hub:

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "errorCode": "inSoftwareUpdate",
    "status" : "ERROR"
  }
}

Erreurs au niveau des appareils

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 des 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 génèrent la synthèse vocale associée sur l'appareil.

  • aboveMaximumLightEffectsDuration : Cette durée dépasse la durée maximale d'une heure. Veuillez réessayer.
  • aboveMaximumTimerDuration : Je ne peux définir <device(s)> que pendant <time period>
  • actionNotAvailable : Désolé, je ne peux pas faire ça pour le moment.
  • ActionUnavailablewhileRunning: <device(s)> <is/are running: (Je ne peux pas apporter de modifications)
  • alreadyArmed : <device(s)> <is/are> already armed.
  • alreadyAtMax : <device(s)> <is/are> est déjà réglé sur la température maximale.
  • alreadyAtMin : <device(s)> <is/are> already set to the minimumtemp.
  • alreadyClosed <device(s)> <is/are> already closed.
  • déjarmé : <appareil(s)> <is/are> déjà désactivé(s).
  • déjà installé : <device(s)> <is/are> sont déjà sur la station d'accueil.
  • alreadyInState : <device(s)> <is/are> already in that state.
  • alreadyVerrouillé : <appareil(s)> <est/sont> déjà verrouillé(s)
  • alreadyOff : <device(s)> <is/are> already removed.
  • déjà activé : <device(s)> <is/are> already on.
  • alreadyOpen : <device(s)> <is/are> already open.
  • alreadypause : <appareil(s)> <est/sont> déjà déconnecté(s)
  • alreadyStarted : <device(s)> <is/are> already started.
  • alreadySstoped : <device(s)> <is/are> already stops.
  • alreadyUnlocked : <device(s)> <is/are> already started.
  • ambiguousZoneName : Désolé, <device(s)> ne parvient pas à identifier votre zone. Assurez-vous que vos zones ont des noms uniques, puis réessayez.
  • amountAboveLimit C'est plus que ce que <device(s)> peut accepter.
  • appLaunchFailed : Désolé, échec du lancement de <app name> sur <device(s)>.
  • armFailure : Impossible d'activer <device(s)>.
  • armLevelNeeded : Je ne sais pas quel niveau définir sur <device(s)>. Essayez de dire "Règle <appareil(s)> sur <sécurité faible>" ou "Règle <appareil(s)> sur <sécurité élevée>".
  • authFailure : Je ne parviens pas à joindre <device(s)>. Essayez de vérifier dans l'application que votre <device/devices> <est/sont> entièrement configurés.
  • bagFull : <device(s)> <has/have> <a full bag/fullbag>. Veuillez vider <it/them>, puis réessayer.
  • belowMinimumLightEffectsDuration : Cette durée est inférieure à la durée minimale de cinq minutes. Veuillez réessayer.
  • belowMinimumTimerDuration : 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ée, je n'ai pas pu annuler l'activation de <device(s)>.
  • cancelTooLate : Désolé, il est trop tard pour annuler. Utilisez <device(s)> ou l'application à la place.
  • ChannelSwitchFailed : Désolé, échec du passage à <nom de la chaîne>. Veuillez réessayer plus tard.
  • chargeurIssue : Désolé, il semble que <device(s)> <has/have> <a chargeur issue/charger issues>.
  • commandInsertFailed : Impossible de traiter les commandes pour <device(s)>.
  • deadBatterie : <device(s)> <has/have> <a dead batterie/dead batteries>.
  • degreesOutOfRange : Les degrés demandés sont hors limites pour <device(s)>.
  • deviceAlertNeedsAssistance : <device(s)> <has/have> an active alert and <need(s)> your assistance.
  • deviceAtExtremeDuration
  • deviceBusy Désolé, il semble que <device(s)> soit déjà en train d'effectuer une action.
  • deviceCharging Désolé, il semble que <device(s)> ne peut pas faire cela, car (ha_shared.ItsThatre size=$item.devices.total_device_count) est en charge.
  • deviceClogged : Désolé, il semble que <device(s)> soit bloqué.
  • deviceCurrentDispensing : <device(s)> propose déjà quelque chose.
  • deviceDoorOpen La porte est ouverte sur <device(s)>. Veuillez la fermer et réessayer.
  • deviceHandleClosed L'identifiant est fermé sur l'appareil <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 repaired. Veuillez contacter votre concessionnaire local.
  • deviceNotDocks Désolé, il semble que <device(s)> <isn't/aren't> est inséré dans la station d'accueil. Veuillez le placer sur la station d'accueil, puis réessayer.
  • deviceNotFound : <device(s)> <is/are>n't available. Je vous suggère de le reconfigurer.
  • deviceNotMounted Désolé, il semble que <device(s)> ne peut pas faire cela, car <it/there> <is/are>n'est pas monté.
  • deviceNotReady : <device(s)> <is/are>n't ready.
  • deviceStuck : <device(s)> <is/are> blocked and need your help.
  • deviceTampered : <device(s)> <a/ont> été manipulé(e).
  • deviceThermalShutdown Désolé, il semble que <device(s)> s'est arrêté en raison de températures extrêmes.
  • directResponseOnlyUnreach : <device(s)> <not't/don'> support remote control.
  • désarmFailure : Impossible de désactiver l'alarme de <device(s)>.
  • discreteOnlyOpenClose : Malheureusement, <device(s)> ne peut être ouvert ou fermé que complètement.
  • dispenseAmountAboveLimit : <appareil(s)> ne peut pas distribuer une telle quantité.
  • dispenseAmountUnderLimit : <appareil(s)> ne peut pas distribuer une si petite quantité.
  • dispenseAmountREMAININGExceeded : <device(s)> does not have too <dispense item> to do this.
  • dispenseFractionalAmountNotSupported : <device(s)> can't distribution all fractions of <dispense item>.
  • dispenseFractionalUnitNotSupported <device(s)> does not support fractions of that unit for <dispense item>.
  • dispenseUnitNotSupported : <device(s)> n'est pas compatible avec cette unité pour <dispense item>.
  • doorClosedTooLong Cela fait un moment que la porte de <device(s)> n'a pas été ouverte. Veuillez ouvrir la porte et vérifier qu'il y a bien quelque chose à l'intérieur, puis réessayer.
  • urgenceHeatOn : <appareil(s)> <est/sont> en mode chauffage d'urgence. Vous devez donc <it/ils> régler l'appareil manuellement.
  • faultybattery : <device(s)> <has/have> <a faultybattery/daultybattery>.
  • floorInaccessible : <device(s)> ne peut pas atteindre cette pièce. Veuillez le déplacer vers le bon étage et réessayer.
  • functionNotSupported En fait, <device(s)> <n'est pas compatible ou non> avec cette fonctionnalité.
  • genericDispenseNotSupported : J'ai besoin de savoir ce que vous voulez distribuer. Veuillez réessayer en indiquant le nom de l'élément.
  • hardError : Désolé, une erreur s'est produite et je ne peux pas contrôler votre appareil.
  • hardError : Désolé, une erreur s'est produite et je ne peux pas contrôler votre appareil.
  • inAutoMode : <device(s)> <is/are> currently set to auto mode. Pour modifier la température, vous devez changer de <it/them> mode.
  • inAwayMode : <device(s)> <is/are> actuellement défini sur mode Absent. Pour contrôler votre thermostat, vous devez le passer en mode Chez moi depuis l'application Nest sur votre téléphone, votre tablette ou votre ordinateur.
  • inDryMode : <device(s)> <is/are> actuellement défini en mode sec. Pour modifier la température, vous devez changer de <it/them> mode.
  • inecoMode : <device(s)> <is/are> actuellement défini sur le mode Éco. Pour modifier la température, vous devez changer de <it/them> mode.
  • ininanOnlyMode : <device(s)> <is/are> est actuellement défini sur le mode ventilateur uniquement. Pour modifier la température, vous devez changer de <it/them> mode.
  • inHeatOrCool : <device(s)> <is/are't in theheat/cool mode.
  • inHumidifierMode : <device(s)> <is/are> actuellement défini sur le mode humidificateur. Pour modifier la température, vous devez changer de <it/them> mode.
  • InOffMode : <device(s)> <is/are> actuellement désactivés. Pour modifier la température, vous devez changer de <it/them> mode.
  • inPurifierMode : <device(s)> <is/are> est actuellement défini sur le mode purificateur. Pour modifier la température, vous devez changer de <it/them> mode.
  • inSleepMode : <device(s)> <is/are> in Sleep mode. Veuillez réessayer plus tard.
  • inSoftwareUpdate : <device(s)> <is/are> actuellement dans une mise à jour logicielle.
  • lockFailure : <appareil(s)> n'a pas pu être verrouillé(e).
  • lockState : <device(s)> <is/are> actuellement verrouillé(s)
  • lockToRange Cette température se situe en dehors de la plage verrouillée sur <device(s)>.
  • lowBatterie <appareil(s)> <a/possède> une batterie faible.
  • maxSettingReached : <appareil(s)> <is/are> est déjà défini sur le niveau le plus élevé.
  • 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 : <device(s)> <is/are> déjà défini sur la vitesse minimale.
  • monitoringServiceConnectionLost : <device(s)> <has/have> <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 semblerait qu'il manque un bac <device(s)> <is/are>. 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.
  • networkProfileNotRecognized : Désolé, je ne reconnais pas "<profil réseau>" sur <device(s)>.
  • networkSpeedTestInProgress J'ai déjà testé <network> <speed/speeds>>.
  • noAvailableApp Désolé, il semble que <app name> n'est pas disponible.
  • noAvailableChannel Il semble que la chaîne <channel name> ne soit pas disponible.
  • noChannelSubscription : Vous n'êtes pas abonné à la chaîne <nom de la chaîne> pour le moment.
  • noTimerExists Désolé, il n'y a pas de minuteur défini sur <device(s)>.
  • notSupported Désolé, ce mode n'est pas disponible sur <device(s)>.
  • objectionDetected : <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 indiquer le mode que vous souhaitez activer.
  • phrase secrète incorrect : 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 Ces températures sont trop proches pour constituer une plage de chauffage/climatisation 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 associer de nouveau <device(s)>.
  • remoteSetDisabled :
    • Paramètre facultatif errorCodeReason
    • currentlyArmed - Désolé, la sécurité étant déjà activée, vous devez utiliser <device(s)> ou l'application pour apporter des modifications.
    • remoteUnlockNotAllowed - Désolé, je ne peux pas déverrouiller <device(s)> à distance.
    • remoteControlOff : cette action est actuellement désactivée. Veuillez activer la télécommande sur <device(s)> et réessayer.
    • childSafetyModeActive : cette action est désactivée pour <device(s)> lorsque le mode sécurisé pour les enfants est activé.
  • roomOnDifférentFloors : <device(s)> ne peut pas atteindre ces pièces, car elles sont situées à des étages différents.
  • safetyShutOff : <device(s)> <is/are> en mode Arrêt d'urgence. Vous devez régler<it/yes> manuellement.
  • SceneCannotBeApplied : Désolé, impossible d'appliquer <device(s)>.
  • securityRestriction <device(s)> <has/have> a security limit.
  • logicielUpdateNotAvailable : Désolé, aucune mise à jour logicielle n'est disponible sur <device(s)>.
  • startRequiresTime Pour cela, vous devez me dire pendant combien de temps vous souhaitez exécuter <device(s)>.
  • stillCoolingDown : <device(s)> <is/are> still refroidissement.
  • stillWarmingUp : <device(s)> <is/are> still chaud.
  • streamUnavailable Il semble que le flux soit actuellement indisponible sur <device(s)>.
  • streamUnplayable Désolée, je ne peux pas lire le flux de <device(s)> pour le moment.
  • emptyEmpty <device(s)> <has/have> <an empty tank/empty tanks>. Veuillez les remplir et réessayer.
  • targetAlreadyReached : Désolé, il semble s'agir déjà de la température actuelle.
  • timerValueOutOfRange : <device(s)> ne peut pas être défini pour cette durée.
  • tooManyFailedTentatives : Désolé, trop de tentatives infructueuses. Veuillez accéder à l'application de votre appareil pour effectuer cette action.
  • transientError : Désolé, une erreur s'est produite lors du contrôle de <device(s)>. Veuillez réessayer.
  • désactivé , deviceTurnedOff : <device(s)> <is/are> désactivé actuellement.
  • unableToFindDevice : Je n'ai pas pu localiser <device(s)>.
  • knownFoodPreset <device(s)> n'est pas compatible avec ce préréglage.
  • UnlockFailure : Impossible de déverrouiller <device(s)>.
  • pausableState : <device(s)> ne peut pas être suspendu 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 en utilisant 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 d'analyse lint est plein, l'utilisateur peut toujours démarrer son sèche-linge, mais vous pouvez lui signaler cet état. De même, si la batterie d'un appareil n'est pas vide, vous pouvez toujours exécuter une commande, mais vous devez l'informer que la batterie est faible.

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) sur l'appareil cible

Cet exemple concerne le verrouillage de 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) sur un autre appareil à l'aide de StatusReport

Cet exemple concerne l'activation d'un système de sécurité: OK, activation du système de sécurité. La fenêtre avant 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 d'une exception 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 produiront la synthèse vocale associée à l'appareil.

  • bagFull : <device(s)> <has/have> <a full bag/fullbag>. Veuillez vider <it/them>, puis réessayer.
  • binFull : <device(s)> <has/have> <a full bin/full bins>.
  • carbonMonoxideDetected : Le monoxyde de carbone a été détecté dans <nom de la maison>.
  • deviceAtExtremeDuration
  • deviceJammingDetected : <device(s)> <is/are> jammed.
  • deviceMoved : <device(s)> <was/were> moved.
  • deviceOpen : <device(s)> <is/are> open.
  • deviceTampered : <device(s)> <a/ont> été manipulé(e).
  • deviceUnplugged : <device(s)> <is/are> unplugged.
  • floorInaccessible : <device(s)> ne peut pas atteindre cette pièce. 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> actuellement dans une mise à jour logicielle.
  • Ispassé : <device(s)> <is/are> est actuellement contourné.
  • lowBatterie <appareil(s)> <a/possède> une batterie faible.
  • motionDetected : <device(s)> <detect(s)> mouvement.
  • 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.
  • roomOnDifférentFloors : <device(s)> ne peut pas atteindre ces pièces, car elles sont situées à des étages différents.
  • runCycleFinished : <device(s)> <has/have> running running.
  • securityRestriction <device(s)> <has/have> a security limit.
  • fuméeDetected : De la fumée a été détectée dans <nom de la maison>.
  • emptyEmpty <device(s)> <has/have> <an empty tank/empty tanks>. Veuillez les remplir et réessayer.
  • usingCellularBackup : <device(s)> <is/are> using cellulaire cellulaire.
  • waterLeakDetected : <device(s)> <detect(s)> une fuite d'eau