Erreurs et exceptions

Ce document répertorie les erreurs et les exceptions officiellement compatibles avec les appareils connectés. Veuillez utiliser les codes d'erreur et d'exception fournis dans la réponse de l'intent ou dans les notifications si vous l'avez implémenté, afin que l'Assistant Google alerte les utilisateurs finaux en cas de problème lié à une commande ou à l'état d'un appareil donné. Si la réponse contient une mise en forme incorrecte ou errorCode, l'Assistant Google renvoie aux utilisateurs un message d'erreur générique, par exemple "Désolé, l'appareil device 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 une serrure est bloquée et ne peut pas être verrouillée ni déverrouillée, 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 plusieurs ampoules d'un même fournisseur et qu'elles sont contrôlées par un hub, lorsqu'il demande à éteindre 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'existe aucune différence entre l'utilisation d'erreurs globales 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 figurant dans la réponse présentent la même erreur.
  • Erreur locale: réponse mixte avec des cas d'erreur et de réussite

Erreurs au niveau global

L'extrait de code JSON suivant montre comment renvoyer des erreurs de niveau global dans la réponse QUERY ou EXECUTE.

Exemple d'erreur de niveau global deviceOffline due à l'état hors connexion du hub:

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

Un exemple d'erreur globale inSoftwareUpdate due à la mise à jour du hub est en cours:

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

  • aboveMaximumLightEffectsDuration : C'est plus que la durée maximale, qui est d'une heure. Veuillez réessayer.
  • au-dessus de MaximumMinuteurDuration : 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.
  • actionUnavailableWhenRunning : <device(s)> <est/sont> en cours d'exécution. Je ne peux donc apporter aucune modification.
  • alreadyArmed : <device(s)> <is/are> déjà armé.
  • alreadyAtMax : <device(s)> <is/are> est déjà réglé sur la température maximale.
  • alreadyAtMin : <device(s)> <is/are> est déjà réglé sur la température minimale.
  • alreadyClosed : <device(s)> <est/are> déjà fermé.
  • alreadyDisarmed : <device(s)> <est/sont> déjà désactivé(e)s.
  • alreadyDocked : <device(s)> <is/are> déjà sur la station d'accueil.
  • alreadyInState : <device(s)> <is/are> déjà dans cet état.
  • alreadyLocked : <device(s)> <est/sont> déjà verrouillé.
  • alreadyOff : <device(s)> <est/sont> déjà éteints.
  • alreadyOn : <device(s)> <est/sont> déjà allumés
  • alreadyOpen : <device(s)> <est/are> déjà ouvert.
  • alreadySuspend : <device(s)> <est/are> déjà en pause.
  • alreadyStarted : <device(s)> <is/are> déjà démarré.
  • alreadySended : <device(s)> <is/are> est déjà arrêté.
  • alreadyUnlocked : <device(s)> <is/sont> déjà déverrouillés.
  • ambiousZoneName : Désolé, <device(s)> ne peut pas identifier la zone que vous voulez utiliser. Veuillez vous assurer que vos zones ont des noms uniques, puis réessayer.
  • amountAboveLimit : C'est plus que ce que <device(s)> peut accepter.
  • appLaunchFailed : Désolé, échec du lancement de <app name> sur <device(s)>.
  • armFailure : <device(s)> n'a pas pu être activé.
  • armLevelNeeded : Je ne sais pas quel niveau définir pour <device(s)>. Dites "Règle <appareil(s)> sur <Sécurité faible>" ou "Règle <appareil(s)> sur <sécurité élevée>"
  • authFailure : Je n'arrive pas à me connecter à <device(s)>. Vérifiez dans l'application que votre <device/devices> <est/sont> entièrement configuré.
  • bagFull : <device(s)> <a/ont> <un sac plein/complètement>. Veuillez vider <it/them> et réessayer.
  • belowMinimumLightEffectsDuration : est inférieur à la durée minimale de 5 minutes. Veuillez réessayer.
  • belowMinimumMinuteurDuration : Je ne peux pas régler <device(s)> pendant une si courte durée. Veuillez réessayer.
  • binFull : <device(s)> <has/have> <a full bin/full bins>.
  • cancelArmingRestricted : Malheureusement, 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'appli.
  • channelSwitchFailed : Désolé, impossible de basculer sur la chaîne <nom de la chaîne>. Veuillez réessayer plus tard.
  • chargeurIssue : Désolé, il semble que <device(s)> <has/have> <a chargeur issue/charge issues>.
  • commandInsertFailed : Impossible de traiter les commandes pour <device(s)>.
  • deadBattery : <device(s)> <possède/ont> <batterie déchargée/batteries déchargées>.
  • degreesOutOfRange : les degrés demandés sont hors plage pour <device(s)>.
  • deviceAlertNeedsAssistance : <device(s)> <a/ont> une alerte active et <besoin(s)> de votre aide.
  • deviceAtExtremeTemperature : <device(s)> <is/are> à <une température extrême/des températures extrêmes>.
  • deviceBusy : Désolé, il semble que <device(s)> est déjà en train d'effectuer une action pour le moment.
  • deviceCharging : Désolé, il semble que <device(s)> ne peut pas effectuer cette opération, car (ha_shared.ItsThatre size=$item.devices.total_device_count) est en cours de recharge.
  • deviceClogged : Désolé, il semble que <device(s)> est bloqué.
  • deviceCurrentDispensing : <device(s)> distribue déjà quelque chose.
  • deviceDoorOpen : La porte est ouverte sur <device(s)>. Veuillez la fermer et réessayer.
  • deviceHandleClosed : La poignée est fermée sur <device(s)>. Veuillez l'ouvrir et réessayer.
  • deviceJammingDetected : <device(s)> <is/are> est bloqué.
  • deviceLidOpen : Le capot de votre <device(s)> est ouvert. Veuillez le fermer et réessayer.
  • deviceNeedsRepair : <device(s)> <need(s)> à réparer. Veuillez contacter votre concessionnaire de réparation local.
  • deviceNotDocked : Désolé, il semble que <device(s)> <n'est pas/ne sont pas> sur la station d'accueil. Veuillez la placer <it/them> et réessayer.
  • deviceNotFound : <device(s)> <is/are>n'est pas disponible. Je vous suggère de les configurer à nouveau.
  • deviceNotMounted : Désolé, il semble que <device(s)> ne peut pas faire cela, car <it/why> <is/are>n'est pas installé.
  • deviceNotReady : <device(s)> <is/are>n'est pas prêt.
  • deviceStuck : <device(s)> <est/sont> bloqué(e) et a besoin de votre aide.
  • deviceTampered : <device(s)> <has/have> a été altéré.
  • deviceThermalShutdown : Désolé, il semble que <device(s)> s'est éteint en raison de températures extrêmes.
  • directResponseOnlyUnreach : <device(s)> <ne prend pas en charge/ne prend pas en charge la télécommande.
  • désarmFailure : Impossible de désactiver <device(s)>.
  • discrèteeOnlyOpenClose : Désolé, <device(s)> peut uniquement être ouvert ou fermé complètement.
  • disAmountAboveLimit : <device(s)> ne peut pas distribuer une si grande quantité.
  • disAmountSpendLimit : <device(s)> ne peut pas distribuer une si petite quantité.
  • Dispense ContentExceeded : <device(s)> ne dispose pas de suffisamment de <dispense item> pour faire cela.
  • distribuerFractionalAmountNotSupported : <device(s)> ne peut pas distribuer des fractions de <dispense item>.
  • DispensalUnitNotSupported : <device(s)> n'accepte pas les fractions de cette unité pour <dispense item>.
  • DispenseNotSupported : <device(s)> ne prend pas en charge cette unité pour <dispense item>.
  • doorClosedTooLong : La porte de votre <device(s)> n'a pas été ouverte depuis un moment. Veuillez l'ouvrir, vérifier qu'il y a bien quelque chose à l'intérieur, puis réessayer.
  • UrgenceHeatOn : <device(s)> <est/sont> en mode Chauffage d'urgence. Vous devez donc modifier ces appareils manuellement.
  • faultyBattery : <device(s)> <a/ont> <une batterie défectueuse/des batteries défectueuses>.
  • floorUnreach : <device(s)> ne peut pas accéder à cette pièce. Veuillez les déplacer <it/them> au bon étage et réessayer.
  • functionNotSupported : À vrai dire, <device(s)> <n'est pas/ne prend pas en charge 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 connecté.
  • hardError : Désolé, une erreur s'est produite et je ne peux pas contrôler votre appareil connecté.
  • inAutoMode : <device(s)> <is/are> est actuellement défini en mode automatique. Pour modifier la température, vous devez changer de mode.
  • inAwayMode : <device(s)> <is/are> est actuellement défini sur le mode Absent. Pour contrôler votre thermostat, vous devez le passer manuellement en mode Chez moi à l'aide de l'application Nest sur un téléphone, une tablette ou un ordinateur.
  • inDryMode : <device(s)> <is/are> est actuellement défini en mode sec. Pour modifier la température, vous devez changer de mode.
  • inEcoMode : <device(s)> <is/are> est actuellement défini en mode Éco. Pour modifier la température, vous devez changer de mode.
  • inFanOnlyMode : <device(s)> <is/are> est actuellement défini sur le mode ventilateur uniquement. Pour modifier la température, vous devez changer de mode.
  • inHeatOrCool : <device(s)> <is/are>n'est pas en mode chauffage/climatisation.
  • inHumidifierMode : <device(s)> <is/are> est actuellement réglé sur le mode humidificateur. Pour modifier la température, vous devez changer de mode.
  • inOffMode : <device(s)> <est/sont> actuellement éteints. 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 mode.
  • inSleepMode : <device(s)> <is/are> en mode Sommeil. Veuillez réessayer plus tard.
  • inSoftwareUpdate : <device(s)> <est/sont> en cours de mise à jour logicielle.
  • lockFailure : <device(s)> n'a pas pu être verrouillé.
  • lockState : <device(s)> <est/sont> actuellement verrouillé(s).
  • lockToRange : Cette température se situe en dehors de la plage verrouillée sur <device(s)>.
  • lowBattery : <device(s)> <has/have> de batterie faible.
  • maxSettingReached : <device(s)> <is/are> est déjà défini sur le paramètre le plus élevé.
  • maxSpeedReached : <device(s)> <is/are> est déjà défini sur la vitesse maximale.
  • minSettingReached : <device(s)> <is/are> est déjà défini sur le paramètre le plus bas.
  • minSpeedReached : <device(s)> <is/are> est déjà défini sur la vitesse minimale.
  • monitoringServiceConnectionLost : <device(s)> <has/have> perdu <its/their> connexion au service de surveillance.
  • needAttachment : Désolé, il semble qu'une pièce jointe obligatoire soit manquante dans <device(s)> <is/are>. Veuillez le remplacer et réessayer.
  • needBin : Désolé, il semble qu'il manque une corbeille dans <device(s)> <is/are>. Veuillez le remplacer et réessayer.
  • needPads : <device(s)> <need(s)> new pads.
  • needSoftwareUpdate : <device(s)> <need(s)> une mise à jour logicielle.
  • needWater : <device(s)> <besoin(s)> d'eau.
  • networkProfileNotrecognized : Désolé, je ne reconnais pas "<network profile>" sur <device(s)>.
  • networkSpeedTestInProgress : Je teste déjà l'élément <network> <speed/speeds>>.
  • noAvailableApp : Désolé, il semble que <app name> ne soit pas disponible.
  • noAvailableChannel : Malheureusement, il semble que la chaîne <channel name> n'est pas disponible.
  • noChannelSubscription : Désolé, vous n'êtes pas abonné à la chaîne <channel name> pour le moment.
  • noTimerExists : Désolé, il semble qu'aucun minuteur n'est défini sur <device(s)>.
  • notsupported : Désolé, ce mode n'est pas disponible pour <device(s)>.
  • obstructionDetected : <device(s)> a détecté un obstacle.
  • déconnecté , deviceoffline : Désolé, il semble que <device(s)> <is/are>n'est pas disponible pour le moment.
  • onRequiredsMode : Veuillez spécifier le mode que vous souhaitez activer.
  • secrèteIncorrect : 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 appareils sont trop proches pour la plage de chauffage/climatisation pour <device(s)>. Choisissez des températures plus éloignées.
  • relinkRequired : Désolé, il semble qu'une erreur s'est produite avec votre compte. Veuillez utiliser l'application Assistant ou Google Home 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)>, puis réessayer.
    • childSafetyModeActive : cette action est désactivée pour <device(s)> lorsque le mode Sécurité enfant est actif.
  • roomsOnDifferentFloors : <device(s)> ne peut pas accéder à ces pièces, car elles se trouvent à des étages différents.
  • safetyShutOff : <device(s)> <est/sont> en mode Arrêt d'urgence. Vous devez modifier<it/they> manuellement.
  • SceneCannotBeApplied : Désolé, <device(s)> ne peut pas être appliqué.
  • securityRestriction : <device(s)> <has/have> une restriction de sécurité.
  • softwareUpdateNotAvailable : Désolé, aucune mise à jour logicielle n'est disponible sur <device(s)>.
  • startRequiresTime : Pour cela, vous devez me dire combien de temps vous voulez faire fonctionner <device(s)>.
  • AlwaysCoolingDown : <device(s)> <is/are> encore en train de refroidir.
  • toujoursWarmingUp : <device(s)> <is/are> est encore en cours de préparation.
  • streamUnavailable : Désolé, il semble que le flux soit actuellement indisponible sur <device(s)>.
  • streamUnplayable : Malheureusement, je ne peux pas lire le flux sur <device(s)> pour le moment.
  • réservoir vide : <device(s)> <has/have> <un réservoir vide/vide>. Veuillez remplir <it/them> et réessayer.
  • targetDéjàReached : Malheureusement, il semble que ce soit déjà la température actuelle.
  • minuteurValueOutOfRange : <device(s)> ne peut pas être défini pour cette durée.
  • tooManyFailedFaileds : Désolé, trop de tentatives ont échoué. Veuillez accéder à l'appli de votre appareil pour effectuer cette action.
  • transitientError : Désolé, un problème est survenu lors du contrôle de <device(s)>. Veuillez réessayer.
  • disabledOff , deviceTurnedOff : <device(s)> <est/sont> éteint(e)s pour le moment.
  • unableToLocateDevice : 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 un exceptionCode approprié (pour l'appareil cible).

Par exemple, si l'écran du sèche-linge est plein, l'utilisateur peut quand même démarrer son sèche-linge, mais vous pouvez l'avertir de cet état. De même, lorsqu'un appareil a une batterie faible qui n'est pas vide, vous pouvez toujours exécuter une commande, mais vous devez l'informer que la batterie de l'appareil 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 (SUCCÈS) concernant l'appareil cible.

Cet exemple sert à verrouiller la porte:

Les piles de la serrure 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 (SUCCÈS) concernant un autre appareil utilisant StatusReport

Cet exemple concerne l'activation d'un système de sécurité: D'accord, j'active le 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 de l'exception concernant un autre appareil à l'aide du rapport d'état

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

  • bagFull : <device(s)> <a/ont> <un sac plein/complètement>. Veuillez vider <it/them> et réessayer.
  • binFull : <device(s)> <has/have> <a full bin/full bins>.
  • carbonMonoxyideDetected : Du monoxyde de carbone a été détecté dans <house name>.
  • deviceAtExtremeTemperature : <device(s)> <is/are> à <une température extrême/des températures extrêmes>.
  • deviceJammingDetected : <device(s)> <is/are> est bloqué.
  • deviceMoved : <device(s)> <was/were> removed.
  • deviceOpen : <device(s)> <est/sont> ouvert.
  • deviceTampered : <device(s)> <has/have> a été altéré.
  • deviceUnplugged : <device(s)> <est/sont> débranché.
  • floorUnreach : <device(s)> ne peut pas accéder à cette pièce. Veuillez les déplacer <it/them> au bon étage et réessayer.
  • hardwareFailure : <device(s)> <a/ont> un problème matériel.
  • inSoftwareUpdate : <device(s)> <est/sont> en cours de mise à jour logicielle.
  • isBypassed : <device(s)> <is/are> est actuellement contourné.
  • lowBattery : <device(s)> <has/have> de batterie faible.
  • motionDetected : <device(s)> <detect(s)> mouvement.
  • needPads : <device(s)> <need(s)> new pads.
  • needSoftwareUpdate : <device(s)> <need(s)> une mise à jour logicielle.
  • needWater : <device(s)> <besoin(s)> d'eau.
  • networkJammingDetected : la connexion au réseau domestique <device(s)> ne fonctionne pas correctement.
  • noIssuesReported : <device(s)> n'a signalé aucun problème.
  • roomsOnDifferentFloors : <device(s)> ne peut pas accéder à ces pièces, car elles se trouvent à des étages différents.
  • runCycleFinished : <device(s)> <has/have> a terminé l'exécution.
  • securityRestriction : <device(s)> <has/have> une restriction de sécurité.
  • fuméeDetected : de la fumée a été détectée dans <nom de la maison>.
  • réservoir vide : <device(s)> <has/have> <un réservoir vide/vide>. Veuillez remplir <it/them> et réessayer.
  • using CellularBackup : <device(s)> <est/sont> en train d'utiliser la connexion cellulaire.
  • waterLeakDetected : <device(s)> <detect(s)> une fuite d'eau.