Добро пожаловать в Центр разработчиков Google Home, новое место, где можно научиться разрабатывать действия для умного дома. Примечание. Вы продолжите создавать действия в консоли действий.

Ошибки и исключения

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

В этом документе перечислены официально поддерживаемые ошибки и исключения для устройств умного дома. Пожалуйста, используйте эти коды ошибок и исключений в ответе о намерениях или в уведомлениях , если вы их реализовали, чтобы Google Assistant предупреждал конечных пользователей о проблемах, связанных с данной командой или состоянием устройства. Если ответ содержит неправильное форматирование или errorCode , Google Ассистент выдает пользователям стандартное сообщение об ошибке, например: «Извините, устройство сейчас недоступно».

Ошибки

Вы должны вернуть код ошибки, когда проблема приводит к сбою запроса на выполнение или запрос. Например, если дверной замок заедает и не может быть заперт или отперт, пользователю должна быть возвращена ошибка об этом состоянии.

Коды ошибок могут быть прикреплены на уровне устройства или на глобальном уровне. Например, если у пользователя есть много источников света от одного провайдера и они контролируются концентратором, когда пользователь просит выключить все их источники света, провайдер может вернуть ошибку на уровне устройства, если один источник света отключен, или глобальный -уровня ошибка, если весь их хаб отключен и никакие источники света не могут управляться. Если все устройства отключены, нет никакой разницы между использованием ошибок глобального уровня или уровня устройства. Когда устройство находится в автономном режиме, вы должны сообщать о состоянии {"online": false} в reportState , даже если вы возвращаете код ошибки deviceOffline .

В итоге:

  • Ошибка глобального уровня: все устройства в ответе имеют одинаковую ошибку
  • Ошибка локального уровня: смешанный ответ с ошибками и успешными случаями

Ошибки глобального уровня

В следующем фрагменте кода JSON показано, как вы возвращаете ошибки глобального уровня в ответе QUERY или EXECUTE.

Пример ошибки глобального уровня deviceOffline из-за того, что концентратор находится в автономном режиме:

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

Пример ошибки глобального уровня в inSoftwareUpdate из-за обновления хаба:

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

Ошибки на уровне устройства

ЗАПРОС ответ

В следующем фрагменте кода JSON показано, как возвращать ошибки на уровне устройства в ответе на запрос QUERY.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "devices": {
      "device-id-1": {
        "errorCode": "deviceOffline",
        "status" : "ERROR"
      },
      "device-id-2": {
        "errorCode": "deviceOffline",
        "status" : "ERROR"
      }
    }
  }
}

ВЫПОЛНИТЬ ответ

В следующем фрагменте JSON показано, как вы возвращаете ошибки на уровне устройства в ответе 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
        }
      }
    ]
  }
}

Уведомления с ошибками

Упреждающее уведомление

В следующем фрагменте JSON показано, как вы сообщаете об ошибках на уровне устройства в упреждающем уведомлении.

{
  "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"
          }
        }
      }
    }
  }
}

Последующий ответ

В следующем фрагменте кода JSON показано, как вы сообщаете об ошибках на уровне устройства в последующем ответе.

{
  "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"
            }
          }
        }
      }
    }
  }
}

Список ошибок

Следующие ошибки вызовут связанный TTS на устройстве.

  • вышеMaximumLightEffectsDuration : это больше, чем максимальная продолжительность в 1 час. Пожалуйста, попробуйте еще раз.
  • вышеMaximumTimerDuration : я могу установить <устройства> только до <периода времени>
  • actionNotAvailable : Извините, я не могу сделать это прямо сейчас.
  • actionUnavailableWhileRunning : <устройство(а)> <является/являются> запущенными в данный момент, поэтому я не могу внести какие-либо изменения.
  • уже Armed : <устройство(а)> <есть/являются> уже поставлено на охрану.
  • ужеAtMax : <устройство(а)> <есть/являются> уже настроены на максимальную температуру.
  • ужеAtMin : <устройство(а)> <есть/являются> уже настроены на минимальную температуру.
  • уже закрыто : <устройство(а)> <является/являются> уже закрытыми.
  • уже Disarmed : <устройство(а)> <есть/являются> уже снято с охраны.
  • уже пристыкован : <устройство(а)> <есть/есть> уже пристыковано.
  • ужеInState : <устройство(а)> <находится/находятся> уже в этом состоянии.
  • уже заблокировано : <устройство(а)> <заблокировано/являются> уже заблокированными.
  • ужеOff : <устройство(а)> <есть/являются> уже выключено.
  • уже On : <устройство(а)> <есть/являются> уже включено.
  • ужеOpen : <устройство(а)> <является/являются> уже открытыми.
  • ужеPaused : <устройство(а)> <есть/являются> уже приостановлено.
  • ужеStarted : <устройство(а)> <есть/являются> уже запущенными.
  • ужеStopped : <устройства> <есть/есть> уже остановлены.
  • уже разблокировано : <устройства> <есть/являются> уже разблокированными.
  • ambiguousZoneName : извините, <device(s)> не может определить, какую зону вы имеете в виду. Убедитесь, что ваши зоны имеют уникальные имена, и повторите попытку.
  • amountAboveLimit : Это больше, чем может поддерживать <device(s)>.
  • appLaunchFailed : извините, не удалось запустить <имя приложения> на <устройствах>.
  • armFailure : <устройство(а)> не может быть поставлено на охрану.
  • armLevelNeeded : я не уверен, какой уровень установить для <device(s)>. Попробуйте сказать «Установите для <устройства> <низкий уровень безопасности>» или «Установите для <устройства> <высокий уровень безопасности>».
  • authFailure : я не могу подключиться к <устройствам>. Попробуйте проверить приложение, чтобы убедиться, что ваше <device/devices> <is/are> полностью настроено.
  • bagFull : <устройство(а)> <имеет/есть> <полная сумка/полные сумки>. Пожалуйста, очистите <it/them> и повторите попытку.
  • нижеMinimumLightEffectsDuration : меньше минимальной продолжительности в 5 минут. Пожалуйста, попробуйте еще раз.
  • нижеMinimumTimerDuration : я не могу установить <устройства> на такое короткое время. Пожалуйста, попробуйте еще раз.
  • binFull : <устройство(а)> <имеет/есть> <полная корзина/полные корзины>.
  • cancelArmingRestricted : Извините, мне не удалось отменить постановку <устройства> на охрану.
  • cancelTooLate : Извините, уже слишком поздно для отмены. Вместо этого используйте <устройства> или приложение.
  • channelSwitchFailed : Извините, не удалось переключиться на канал <название канала>. Пожалуйста, повторите попытку позже.
  • chargeIssue : Извините, это выглядит как <устройство(а)> <имеет/есть> <проблема с зарядным устройством/проблемы с зарядным устройством>.
  • commandInsertFailed : невозможно обработать команды для <устройства>.
  • deadBattery : <устройство(а)> <имеет/есть> <разряженная батарея/разряженные батареи>.
  • DegreeOutOfRange : запрошенные градусы выходят за пределы допустимого диапазона для <устройства(ов)>.
  • deviceAlertNeedsAssistance : <устройство(а)> <имеет/имеет> активное оповещение и <нуждается(а)> в вашей помощи.
  • deviceAtExtremeTemperature : <устройство(а)> <находится/находятся> при <экстремальной температуре/экстремальных температурах>.
  • deviceBusy : Извините, похоже, что <device(s)> уже что-то делает прямо сейчас.
  • deviceCharging : Извините, похоже, что <device(s)> не может этого сделать, потому что (ha_shared.Its Theyre size=$item.devices.total_device_count) заряжается.
  • deviceClogged : Извините, похоже <устройство(а)> засорено.
  • deviceCurrentlyDispensing : <device(s)> уже что-то раздает прямо сейчас.
  • deviceDoorOpen : Дверь открыта на <устройстве(ах)>. Пожалуйста, закройте его и повторите попытку.
  • deviceHandleClosed : дескриптор закрыт на <устройствах>. Пожалуйста, откройте его и повторите попытку.
  • deviceJammingDetected : <устройство(я)> <заблокировано/являются>.
  • deviceLidOpen : крышка открыта на <устройстве(ах)>. Пожалуйста, закройте его и повторите попытку.
  • deviceNeedsRepair : <устройство(я)> <требуется(и)> для ремонта. Обратитесь к местному дилеру по обслуживанию.
  • deviceNotDocked : Извините, похоже, что <устройство(а)> <не/не> пристыковано. Пожалуйста, закрепите <это/их> и повторите попытку.
  • deviceNotFound : <устройство(а)> <является/являются> недоступными. Возможно, вы захотите снова настроить <это/их>.
  • deviceNotMounted : извините, похоже, что <устройства> не могут этого сделать, потому что <оно/они> не смонтированы.
  • deviceNotReady : <устройство(а)> <есть/не>не готовы.
  • deviceStuck : <устройство(а)> <застряло/застряли> и нуждается в вашей помощи.
  • deviceTampered : <устройство(а)> <было/было> подделано.
  • deviceThermalShutdown : Извините, похоже, <устройства> отключены из-за экстремальных температур.
  • directResponseOnlyUnreachable : <устройство(а)> <не поддерживает/не поддерживает удаленное управление.
  • disarmFailure : <устройства> не могут быть сняты с охраны.
  • discOnlyOpenClose : Извините, <устройство(а)> можно только полностью открыть или закрыть.
  • дозироватьAmountAboveLimit : <устройство(а)> не может выдать такое большое количество.
  • disposeAmountBelowLimit : <устройство(а)> не может дозировать такое небольшое количество.
  • dispensAmountRemainingExceeded : <device(s)> не имеет достаточного количества <dispense item> для этого.
  • dispenseFractionalAmountNotSupported : <устройство(а)> не может распределять части <раздаточного предмета>.
  • dispenseFractionalUnitNotSupported : <устройство(я)> не поддерживает доли этой единицы для <элемента раздачи>.
  • дозироватьUnitNotSupported : <устройство (устройства)> не поддерживает эту единицу для <раздаточного элемента>.
  • doorClosedTooLong : Прошло некоторое время с тех пор, как дверь на <устройстве(ах)> была открыта. Пожалуйста, откройте дверь, убедитесь, что внутри что-то есть, и попробуйте еще раз.
  • EmergencyHeatOn : <устройство(а)> <находится/находятся> в режиме аварийного обогрева, поэтому <это/они> придется настраивать вручную.
  • faultyBattery : <устройство(а)> <имеет/имеет> <неисправная батарея/неисправные батареи>.
  • floorUnreachable : <устройства> не могут подключиться к этой комнате. Пожалуйста, переместите <это/их> на нужный этаж и повторите попытку.
  • functionNotSupported : На самом деле, <устройства> <не/не> поддерживают эту функциональность.
  • genericDispenseNotSupported : мне нужно знать, что вы хотите раздать. Пожалуйста, попробуйте еще раз с названием элемента.
  • hardError : Извините, что-то пошло не так, и я не могу управлять вашим домашним устройством.
  • hardError : Извините, что-то пошло не так, и я не могу управлять вашим домашним устройством.
  • inAutoMode : <устройство(а)> <является/являются> в данный момент настроено на автоматический режим. Чтобы изменить температуру, вам нужно переключить <это/их> в другой режим.
  • inAwayMode : <устройство(а)> <находится/находятся> в данный момент установлено в режим отсутствия. Чтобы управлять термостатом, вам нужно вручную переключить его в домашний режим с помощью приложения Nest на телефоне, планшете или компьютере.
  • inDryMode : <устройство(а)> <есть/являются> в настоящее время настроены на сухой режим. Чтобы изменить температуру, вам нужно переключить <это/их> в другой режим.
  • inEcoMode : <устройство(а)> <находится/являются> в данный момент настроено на экономичный режим. Чтобы изменить температуру, вам нужно переключить <это/их> в другой режим.
  • inFanOnlyMode : <device(s)> <is/are> в настоящее время настроены на режим только вентилятора. Чтобы изменить температуру, вам нужно переключить <это/их> в другой режим.
  • inHeatOrCool : <устройство(а)> <находится/не>не в режиме обогрева/охлаждения.
  • inHumidifierMode : <устройство(а)> <является/являются> в данный момент настроено на режим увлажнителя. Чтобы изменить температуру, вам нужно переключить <это/их> в другой режим.
  • inOffMode : <устройство(а)> <в настоящее время выключено. Чтобы изменить температуру, вам нужно переключить <это/их> в другой режим.
  • inPurifierMode : <устройство(а)> <является/являются> в данный момент настроено на режим очистки. Чтобы изменить температуру, вам нужно переключить <это/их> в другой режим.
  • inSleepMode : <устройство(а)> <находится/находятся> в спящем режиме. Пожалуйста, повторите попытку позже.
  • inSoftwareUpdate : <устройство(а)> <находится/находятся> в настоящее время в обновлении программного обеспечения.
  • lockFailure : <устройства> не могут быть заблокированы.
  • LockedState : <устройство(а)> <заблокировано/являются> в данный момент заблокированными.
  • LockedToRange : эта температура находится за пределами заблокированного диапазона на <устройствах>.
  • lowBattery : <устройство(а)> <имеет/имеет> низкий заряд батареи.
  • maxSettingReached : <устройство(а)> <является/являются> уже установлены на максимальное значение.
  • maxSpeedReached : <устройство(а)> <является/являются> уже настроено на максимальную скорость.
  • minSettingReached : <устройство(а)> <является/являются> уже настроено на самое низкое значение.
  • minSpeedReached : <устройства> <есть/есть> уже установлены на минимальную скорость.
  • MonitoringServiceConnectionLost : <устройство(а)> <имеет/имеет> потеряло <свое/их> соединение со службой мониторинга.
  • needAttachment : Извините, похоже, что <device(s)> <is/are> отсутствует необходимое вложение. Пожалуйста, замените его и повторите попытку.
  • needBin : Извините, похоже, <device(s)> <is/are> не хватает корзины. Пожалуйста, замените его и повторите попытку.
  • needPads : <устройство(я)> <необходимость(и)> новые планшеты.
  • needSoftwareUpdate : <устройство(я)> <требуется(я)> обновление программного обеспечения.
  • needWater : <устройство(я)> <потребность(я)> вода.
  • networkProfileNotRecognized : извините, я не узнаю «<сетевой профиль>» на <устройствах>.
  • networkSpeedTestInProgress : я уже тестирую <сеть> <скорость/скорость>>.
  • noAvailableApp : Извините, похоже <имя приложения> недоступно.
  • noAvailableChannel : Извините, похоже, что канал <название канала> недоступен.
  • noChannelSubscription : К сожалению, в данный момент вы не подписаны на канал <название канала>.
  • noTimerExists : Извините, похоже, что на <устройстве(ах)> не установлены таймеры.
  • notSupported : К сожалению, этот режим недоступен для <устройства>.
  • obstructionDetected : <устройство(а)> обнаружило препятствие.
  • offline , deviceOffline : Извините, похоже, <устройство(а)> <is/are> сейчас недоступно.
  • onRequiresMode : укажите, какой режим вы хотите включить.
  • passphraseIncorrect : Извините, похоже, что этот PIN-код неверен.
  • процентOutOfRange : извините, я не могу установить для <устройства> значение <процент>.
  • pinIncorrect : (пароль неверный)
  • rainDetected : я не открывал <устройства>, потому что был обнаружен дождь.
  • rangeTooClose : они слишком близки для диапазона Heat-Cool для <device(s)>. Выберите температуры, которые находятся дальше друг от друга.
  • relinkRequired : извините, похоже, что-то пошло не так с вашей учетной записью. Воспользуйтесь приложением Google Home или Assistant, чтобы повторно связать <устройства>.
  • удаленный сетдисаблед :
    • Необязательный параметр errorCodeReason
    • currentlyArmed на охране. Извините, поскольку система безопасности уже включена, для внесения изменений необходимо использовать <устройство(а)> или приложение.
    • remoteUnlockNotAllowedИзвините, я не могу удаленно разблокировать <устройства>.
    • remoteControlOffэто действие в настоящее время отключено. Включите удаленное управление на <устройствах> и повторите попытку.
    • childSafetyModeActiveэто действие отключено для <устройства>, пока активен детский режим безопасности.
  • roomOnDifferentFloors : <устройства> не могут получить доступ к этим комнатам, поскольку они находятся на разных этажах.
  • SafetyShutOff : <устройство(а)> <находится/находятся> в режиме безопасного отключения, поэтому <это/они> придется настраивать вручную.
  • sceneCannotBeApplied : извините, <устройства> не могут быть применены.
  • securityRestriction : <устройство(а)> <имеет/имеет> ограничение безопасности.
  • softwareUpdateNotAvailable : К сожалению, на <устройствах> нет доступных обновлений программного обеспечения.
  • startRequiresTime : для этого вам нужно сообщить мне, как долго вы хотите запускать <устройство(а)>.
  • StillCoolingDown : <устройство(а)> <есть/есть> все еще остывает.
  • StillWarmingUp : <устройства> <есть/есть> все еще прогреваются.
  • streamUnavailable : извините, похоже, что поток в настоящее время недоступен с <устройства>.
  • streamUnplayable : извините, в данный момент я не могу воспроизвести поток с <устройства>.
  • tankEmpty : <устройство(а)> <имеет/есть> <пустой бак/пустые баки>. Пожалуйста, заполните <it/them> и повторите попытку.
  • targetAlreadyReached : Извините, похоже, это уже текущая температура.
  • timerValueOutOfRange : <устройство(а)> не может быть установлено на этот период времени.
  • tooManyFailedAttempts : Извините, слишком много неудачных попыток. Пожалуйста, перейдите в приложение вашего устройства, чтобы выполнить это действие.
  • transientError : Извините, что-то пошло не так при управлении <устройствами>. Пожалуйста, попробуйте еще раз.
  • TurnOff , deviceTurnedOff : <устройство(а)> <является/являются> выключенными в данный момент.
  • failedToLocateDevice : мне не удалось найти <устройство(а)>.
  • unknownFoodPreset : <устройство(я)> не поддерживает этот пресет еды.
  • unlockFailure : <устройства> не могут быть разблокированы.
  • unpausableState : <устройства> не могут быть приостановлены прямо сейчас.
  • пользовательОтменено : хорошо
  • valueOutOfRange : <устройство(а)> не может быть установлено на эту температуру.

Исключения

Вы должны вернуть исключение, когда есть проблема или предупреждение, связанное с командой. Команда может быть успешной или неудачной.

Если команда выполнена успешно (status = "SUCCESS"), сообщайте об исключениях, используя StatusReport StatusReport (для устройств, отличных от целевого), или возвращая соответствующий код exceptionCode (для целевого устройства).

Например, если экран сушилки заполнен, пользователь все еще может запустить свою сушилку, но вы можете предупредить его об этом состоянии. Точно так же, когда у устройства разряжена батарея, которая не разряжена, вы все равно можете выполнить команду, но должны сообщить им, что батарея устройства разряжена.

Если команда завершается сбоем из-за исключений, статус должен быть «ИСКЛЮЧЕНИЯ», и об исключениях следует сообщать с помощью признака StatusReport .

Неблокирующее исключение (УСПЕХ) о целевом устройстве

Этот пример для блокировки двери:

В замке передней двери разряжен аккумулятор. Запирание входной двери.

{
  "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"
      }
    }]
  }
}

Неблокирующее исключение (SUCCESS) о другом устройстве с использованием StatusReport

Этот пример для постановки системы безопасности на охрану: Хорошо, поставьте систему на охрану. Переднее окно открыто.

{
  "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"
        }]
      }
    }]
  }
}

Исключение блокировки для другого устройства с помощью 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"
          }
        ]
      }
    }
  }
}

Список исключений

Следующие исключения будут создавать связанные TTS на устройстве.

  • bagFull : <устройство(а)> <имеет/есть> <полная сумка/полные сумки>. Пожалуйста, очистите <it/them> и повторите попытку.
  • binFull : <устройство(а)> <имеет/есть> <полная корзина/полные корзины>.
  • carbonMonoxidDetected : в <название дома> обнаружен угарный газ.
  • deviceAtExtremeTemperature : <устройство(а)> <находится/находятся> при <экстремальной температуре/экстремальных температурах>.
  • deviceJammingDetected : <устройство(я)> <заблокировано/являются>.
  • deviceMoved : <устройство(а)> <было/было> перемещено.
  • deviceOpen : <устройство(а)> <является/являются> открытыми.
  • deviceTampered : <устройство(а)> <было/было> подделано.
  • deviceUnplugged : <устройство(а)> <является/являются> отключенными.
  • floorUnreachable : <устройства> не могут подключиться к этой комнате. Пожалуйста, переместите <это/их> на нужный этаж и повторите попытку.
  • hardwareFailure : <устройство(а)> <имеет/имеют> аппаратную проблему.
  • inSoftwareUpdate : <устройство(а)> <находится/находятся> в настоящее время в обновлении программного обеспечения.
  • isBypassed : <устройство(а)> <является/являются> в данный момент обойденными.
  • lowBattery : <устройство(а)> <имеет/имеет> низкий заряд батареи.
  • motionDetected : <устройство(я)> <обнаружение(я)> движения.
  • needPads : <устройство(я)> <необходимость(и)> новые планшеты.
  • needSoftwareUpdate : <устройство(я)> <требуется(я)> обновление программного обеспечения.
  • needWater : <устройство(я)> <потребность(я)> вода.
  • networkJammingDetected : подключение домашней сети к <устройствам> не работает должным образом.
  • noIssuesReported : <устройство(я)> не сообщило о проблемах.
  • roomOnDifferentFloors : <устройства> не могут получить доступ к этим комнатам, поскольку они находятся на разных этажах.
  • runCycleFinished : <устройство(а)> <имеет/имеет> завершено выполнение.
  • securityRestriction : <устройство(а)> <имеет/имеет> ограничение безопасности.
  • smokeDetected : В <название дома> обнаружен дым.
  • tankEmpty : <устройство(а)> <имеет/есть> <пустой бак/пустые баки>. Пожалуйста, заполните <it/them> и повторите попытку.
  • usingCellularBackup : <device(s)> <is/are>, использующие резервное копирование по сотовой сети.
  • waterLeakDetected : <device(s)> <detect(s)> утечка воды.